我需要在画布上绘制一些线条,但是我需要使用自定义样式,没有标准样式作为实体,点,…
例如,我需要画一条线作为“__.__._”或“._._._._”.我所有的线都是破折号和点的组合,我需要设置短划线和破折号,点宽.
我不想使用GDI或其他外部库…
有一个简单的方法吗?
解决方法
您可以使用普通GDI执行此操作:
procedure TForm1.FormPaint(Sender: TObject); const pattern: array[0..3] of cardinal = (10,1,1); var lb: TLogBrush; pen,oldpen: HPEN; begin lb.lbStyle := BS_SOLID; lb.lbColor := RGB(255,0); pen := ExtCreatePen(PS_COSMETIC or PS_USERSTYLE,lb,length(pattern),@pattern); if pen <> 0 then try oldpen := SelectObject(Canvas.Handle,pen); Canvas.MoveTo(0,0); Canvas.LineTo(ClientWidth,ClientHeight); SelectObject(Canvas.Handle,oldpen); finally DeleteObject(pen); end; end;