本文整理自网络,侵删。

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
GDIPAPI,GDIPOBJ; //包含这两个GDI+单元
var
flag:Integer; //声明一个用作标志位的变量,根据它的值来决定是否开始画图
Downx,Downy:Integer; //记录鼠标点下时的坐标
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
flag:=1; //鼠标点下了,标志置1
Downx:=x; //同时记录下点击的坐标
Downy:=y;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
g: TGPGraphics;
p: TGPPen;
begin
Form1.DoubleBuffered:=True; //开启双缓冲
if flag = 1 then //判断是否开始画图,标志为1就开始画
begin
g := TGPGraphics.Create(Canvas.Handle); //创建对象
p := TGPPen.Create(aclRed,2);
p.SetStartCap(LineCapRound); //设置线帽,让线看起来更圆润
p.SetEndCap(LineCapRound);
g.SetSmoothingMode(SmoothingModeHighQuality); //抗锯齿
g.DrawLine(p,Downx,Downy,x,y); //画线
Downx:=x; //保存旧的坐标,留待下一次使用
Downy:=y;
p.Free; //对象释放
g.Free;
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
flag:=0; //鼠标抬起了,标志置0,表示不再画图了
end;
end.
相关阅读 >>
incsecond:将一个tdatetime变量加减一定数量的秒数
更多相关阅读请进入《Delphi》频道 >>