GDI+路径保存线帽问题
最近在研究GDI+,发现用路径保存线的时候,直线是可以保存,但是线帽保存不了,请问大家有什么解决方法吗?
我的代码如下
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, RzPanel, StdCtrls, GDIPOBJ, GDIPAPI;
type
TForm1 = class(TForm)
RzPanel1: TRzPanel;
RzPanel2: TRzPanel;
ScrollBox1: TScrollBox;
RadioGroup1: TRadioGroup;
procedure FormCreate(Sender: TObject);
procedure ScrollBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ScrollBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x1, y1: Integer;
g: TGPGraphics;
p: TGPPen;
path: TGPGraphicsPath;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Position := PoDesktopCenter;
g := TGPGraphics.Create(GetDC(ScrollBox1.Handle));
p := TGPPen.Create(aclRed, 10);
g.SetSmoothingMode(SmoothingModeHighQuality);
p.SetStartCap(LineCapAnchorMask);
p.SetEndCap(LineCapArrowAnchor);
path := TGPGraphicsPath.Create;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
g.DrawPath(p, path);
end;
procedure TForm1.ScrollBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
x1 := x;
y1 := y;
end;
procedure TForm1.ScrollBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
g.DrawLine(p, x1, y1, x, y);
path.StartFigure;
path.AddLine(MakePoint(x1, y1), MakePoint(x, y));
path.CloseFigure;
end;
[解决办法]
http://www.cnblogs.com/keyvip/archive/2010/10/10/1847283.html
[code=Delphi(Pascal])//线帽
var
g: TGPGraphics;
p: TGPPen;
begin
g := TGPGraphics.Create(Canvas.Handle);
p:= TGPPen.Create(aclBlue, 5);
p.SetStartCap(LineCapArrowAnchor); {起点线帽,这里是箭头状锚头帽}
p.SetEndCap(LineCapRoundAnchor); {终点线帽,这里是圆形锚头帽}
g.DrawLine(p, 20, 20, 220, 100);
p.Free;
g.Free;
end;[/code]