StartCap 和 EndCap 属性分别用来读写两段的线帽, 测试图:
StartCap 和 EndCap 测试代码:
uses GdiPlus;procedure TForm1.FormPaint(Sender: TObject); constCapArr: array[0..8] of Byte = (0, 1, 2, 3, $10, $11, $12, $13, $14); varGraphics: IGPGraphics;Pen: IGPPen;Pt1,Pt2: TGPPoint;i: Integer; beginPt1.Initialize(20, 20);Pt2.Initialize(200, 20);Graphics := TGPGraphics.Create(Handle);Pen := TGPPen.Create($FF2E8B57, 11);for i := 0 to Length(CapArr) - 1 dobeginPen.StartCap := TGPLineCap(CapArr[i]);Pen.EndCap := Pen.StartCap;Graphics.DrawLine(Pen, Pt1, Pt2);Graphics.TranslateTransform(0, Pt1.Y * 1.5);end; end;
DashCap 属性用来读写虚线线帽, 这在实线中没有效果; 测试图:
DashCap 测试代码:
uses GdiPlus;procedure TForm1.FormPaint(Sender: TObject); varGraphics: IGPGraphics;Pen: IGPPen;Pt1,Pt2: TGPPoint; beginPt1.Initialize(20, 20);Pt2.Initialize(240, 20);Graphics := TGPGraphics.Create(Handle);Pen := TGPPen.Create($FF4169E1, 11);Pen.DashStyle := DashStyleDashDot;Pen.DashCap := DashCapFlat;Graphics.DrawLine(Pen, Pt1, Pt2);Graphics.TranslateTransform(0, Pt1.Y * 1.5);Pen.DashCap := DashCapRound;Graphics.DrawLine(Pen, Pt1, Pt2);Graphics.TranslateTransform(0, Pt1.Y * 1.5);Pen.DashCap := DashCapTriangle;Graphics.DrawLine(Pen, Pt1, Pt2); end;
可通过 SetLineCap 方法一起设定 StartCap、EndCap、DashCap, 测试图:
SetLineCap 测试代码:
uses GdiPlus;procedure TForm1.FormPaint(Sender: TObject); varGraphics: IGPGraphics;Pen: IGPPen; beginGraphics := TGPGraphics.Create(Handle);Pen := TGPPen.Create($FFC71585, 11);Pen.DashStyle := DashStyleDashDot;Pen.SetLineCap(LineCapRoundAnchor, LineCapArrowAnchor, DashCapTriangle);Graphics.DrawLine(Pen, 20, 30, 300, 30); end;