GdiPlus[30]: IGPPen: 线帽


StartCap 和 EndCap 属性分别用来读写两段的线帽, 测试图:

o_09121601.png

StartCap 和 EndCap 测试代码:

uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
const
  CapArr: array[0..8] of Byte = (0, 1, 2, 3, $10, $11, $12, $13, $14);
var
  Graphics: IGPGraphics;
  Pen: IGPPen;
  Pt1,Pt2: TGPPoint;
  i: Integer;
begin
  Pt1.Initialize(20, 20);
  Pt2.Initialize(200, 20);
  Graphics := TGPGraphics.Create(Handle);
  Pen := TGPPen.Create($FF2E8B57, 11);

  for i := 0 to Length(CapArr) - 1 do
  begin
    Pen.StartCap := TGPLineCap(CapArr[i]);
    Pen.EndCap := Pen.StartCap;
    Graphics.DrawLine(Pen, Pt1, Pt2);
    Graphics.TranslateTransform(0, Pt1.Y * 1.5);
  end;
end;

DashCap 属性用来读写虚线线帽, 这在实线中没有效果; 测试图:

o_09121602.png

DashCap 测试代码:

uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
var
  Graphics: IGPGraphics;
  Pen: IGPPen;
  Pt1,Pt2: TGPPoint;
begin
  Pt1.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, 测试图:

o_09121603.png

SetLineCap 测试代码:

uses GdiPlus;

procedure TForm1.FormPaint(Sender: TObject);
var
  Graphics: IGPGraphics;
  Pen: IGPPen;
begin
  Graphics := TGPGraphics.Create(Handle);
  Pen := TGPPen.Create($FFC71585, 11);
  Pen.DashStyle := DashStyleDashDot;

  Pen.SetLineCap(LineCapRoundAnchor, LineCapArrowAnchor, DashCapTriangle);

  Graphics.DrawLine(Pen, 20, 30, 300, 30);
end;

转载于:https://www.cnblogs.com/del/archive/2009/12/16/1625455.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值