谁会裁剪图片?(50分)

  • 主题发起人 主题发起人 sikaman
  • 开始时间 开始时间
S

sikaman

Unregistered / Unconfirmed
GUEST, unregistred user!
条件:一个IMAGE,工具当然是DELPHI
要求:通过编程,使鼠标在IMAGE能上拖出一个矩形,并把矩形内的图片裁剪出来,存为另一个图片。
 
用Canvas.CopyRect函数
例子:
var
Bitmap: TBitmap;
MyRect, MyOther: TRect;
begin

MyRect := Rect(10,10,100,100);

MyOther := Rect(10,111,100, 201);
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile('c:/windows/tartan.bmp');
Form1.Canvas.BrushCopy(MyRect, Bitmap, MyRect, clBlack);
Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect);
Bitmap.Free;
end;
 
To yostgxf:
谢谢你的例子,但例子里面没有鼠标的动作。我需要通过鼠标操作。就像“图画”中鼠标左键点下,拖动生成一个矩形那样,矩形内的图片可以考出来。
 
这么快沉下去了,自己顶一下。
有高手吗?
 
难道这里没有人会?
 
var
isDraw:boolean;
pts:array[0..1]of TPoint;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pts[0]:= Point(X, Y);
pts[1]:= Point(X, Y);
isDraw:=true;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if isDraw then
with Image1 do
begin
Canvas.Pen.Style:= psDot;
Canvas.Pen.Color:= clGray;
Canvas.Pen.Mode := pmNotXor;
Canvas.Rectangle(pts[0].X, pts[0].Y, pts[1].X, pts[1].Y);
Canvas.Rectangle(pts[0].X, pts[0].Y, X, Y);
pts[1] := Point(X, Y);
Canvas.Pen.Mode := pmCopy;
end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if isDraw then
begin
isDraw:=false;
Image2.Width:= pts[1].X-pts[0].X;
Image2.Height:= pts[1].Y-pts[0].Y;
Image2.Canvas.CopyRect(Rect(0,0,Image2.Width,Image2.Height),Image1.Canvas,Rect(pts[0].X, pts[0].Y, pts[1].X, pts[1].Y));
end;
end;
 
Canvas.Pen.Style:= psDot;
Canvas.Pen.Color:= clGray;
Canvas.Pen.Mode := pmNotXor;
Canvas.Rectangle(pts[0].X, pts[0].Y, pts[1].X, pts[1].Y);
Canvas.Rectangle(pts[0].X, pts[0].Y, X, Y);
pts[1] := Point(X, Y);
Canvas.Pen.Mode := pmCopy;
可改为:
Canvas.DrawFocusRect(Rect(pts[0].X, pts[0].Y, pts[1].X, pts[1].Y));
Canvas.DrawFocusRect(Rect(pts[0].X, pts[0].Y, X, Y));
pts[1] := Point(X, Y);
 
真是高手呀!
非常感谢,以后多多交流。
请加我QQ:112833843,谢谢。
 

Similar threads

D
回复
0
查看
764
DelphiTeacher的专栏
D
D
回复
0
查看
738
DelphiTeacher的专栏
D
D
回复
0
查看
691
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部