如何在Image的Canvas上画一条直线(要求,画斜线时锯齿不能太大)(200分)

  • 主题发起人 主题发起人 whitelion
  • 开始时间 开始时间
W

whitelion

Unregistered / Unconfirmed
GUEST, unregistred user!
>画斜线时锯齿不能太大:

您需要处理毛刺算法,我改天找找,N年前做过的,忘记了.

先写一段画线程序:

var
Form1: TForm1;
aa :Boolean;
ss,ee :TPoint;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
aa :=False;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
aa :=True;
ss :=Point(x,y);
ee :=ss;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if aa then
begin
Canvas.MoveTo(ss.x,ss.y);
Canvas.LineTo(ee.x,ee.y);
Canvas.Pen.Mode :=pmNotXor;
ee :=Point(x,y);
Canvas.MoveTo(ss.x,ss.y);
Canvas.LineTo(ee.x,ee.y);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if aa then
begin
Canvas.MoveTo(ss.x,ss.y);
Canvas.LineTo(ee.x,ee.y);
Canvas.MoveTo(ss.x,ss.y);
Canvas.LineTo(x,y);
end;
aa :=False;
end;
 
这也算?找找算法吧。
 
我已经找到答案了,谢谢两位
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
824
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
669
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部