L
lngdtommy
Unregistered / Unconfirmed
GUEST, unregistred user!
我想在image上画线,就像photoshop的套索那样,划出不规则的一块。然后将其copy到另一个image上,我代码如下:
private
p1:TPoint;
p2:TPoint;
capture:boolean;
movex,movey:integer;
procedure Thair_frm.imageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
hair_frm.DoubleBuffered:=true;
p1.X:=x;
p1.Y:=y;
p2.X:=x;
p2.Y:=y;
capture:=true;
setcapture(handle);
image.Canvas.Pen.Color:=clred;
image.Canvas.Pen.Style:=pssolid;
image.Canvas.Brush.Color:=clred;
image.Canvas.Brush.Style:=bssolid;
image.Canvas.MoveTo(x,y);
end;
procedure Thair_frm.imageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin //连线
if capture then
begin
hair_frm.DoubleBuffered:=true;
image.Canvas.Pen.Mode:=pmNotXor ;
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
p2.X:=x;
p2.Y:=y;
movex:=x;
movey:=y;
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
end;
procedure Thair_frm.imageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
p2.X:=x;
p2.Y:=y;
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
end;
private
p1:TPoint;
p2:TPoint;
capture:boolean;
movex,movey:integer;
procedure Thair_frm.imageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
hair_frm.DoubleBuffered:=true;
p1.X:=x;
p1.Y:=y;
p2.X:=x;
p2.Y:=y;
capture:=true;
setcapture(handle);
image.Canvas.Pen.Color:=clred;
image.Canvas.Pen.Style:=pssolid;
image.Canvas.Brush.Color:=clred;
image.Canvas.Brush.Style:=bssolid;
image.Canvas.MoveTo(x,y);
end;
procedure Thair_frm.imageMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin //连线
if capture then
begin
hair_frm.DoubleBuffered:=true;
image.Canvas.Pen.Mode:=pmNotXor ;
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
p2.X:=x;
p2.Y:=y;
movex:=x;
movey:=y;
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
end;
procedure Thair_frm.imageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
p2.X:=x;
p2.Y:=y;
image.Canvas.MoveTo(p1.X,p1.Y);
image.Canvas.LineTo(p2.X,p2.Y);
end;