关于创建剪切区域。很急!谢谢! (100分)

  • 主题发起人 主题发起人 lucy9260
  • 开始时间 开始时间
L

lucy9260

Unregistered / Unconfirmed
GUEST, unregistred user!
如何像windows“画图”中的那样创建一个矩形框用于选定剪切区域?
另外,选定之后要把矩形外面的图形剪切掉该怎么做?谢谢!!!!!!!!!
 
這個問題好象不少貼子有涉及過了,主要就是用Canvas的CopyRect函數
如下代碼,從image1上復制一塊到iamge2上去
Var
width,height,x1,y1,oldx,oldy:integer;
newbitmap:Tbitmap;
begin
image1.canvas.rectangle(x1,y1,oldx,oldy);
width:=abs(x2-x1);
height:=abs(y2-y1);
image2.Width:=Width;
image2.Height:=Height;
newbitmap:=Tbitmap.create;
newbitmap.width:=width;
newbitmap.height:=height;
newbitmap.Canvas.CopyRect(Rect (0, 0, width, Height),image2.canvas,Rect (x1, y1,x2,y2)); // 蕭探
image2.picture.bitmap:=newbitmap; // // 放到 IMAGE2 上
newbitmap.free;
end
 
谢谢luyear的解答!
上面的方法我想到过,不过现在我的图形是直接在窗口上画的,
也就是说画图时用的是form1.canvas,因为我在form上加image组件后在image上画图时屏幕一直在闪
(我不知道为什么,'delphi/demo/doc/graphex'中的例子执行时也是这样),但直接在form的画布上画就很好。
所以我想问如果不用image,不知有没有办法。
 
OnCreate中加上DoubleBuffered := True
 
选定之后要把矩形外面的图形剪切掉该怎么做?
可以分成四个矩形,然后填充初始颜色,效果应该一样。
Bitmap.Canvas.Brush.Color := clBtnFace;
Bitmap.Canvas.FillRect(Rect());
 
用路径,再将路径转化为区域,然后再进行区域的加减既可。我现在有点忙,如果你要,有抽空给你写段代码。
 
后退
顶部