哪位大哥有将一个image指定区域的图形拷贝到另外一个image里面的代码啊???(着急)(100分)

  • 主题发起人 主题发起人 terminal_guo
  • 开始时间 开始时间
T

terminal_guo

Unregistered / Unconfirmed
GUEST, unregistred user!
哪位大哥有将一个image指定区域的图形拷贝到另外一个image里面的代码啊????(着急)
 
Image1.Canvas.CopyRect(Rect1, Image2.Canvas, Rect2);
Rect1为Image1的区域, Rect2为Image2的区域

意思是从Image2的Rect2区域拷贝到Image1的Rect1区域
 
我有一个问题啊,就是我想通过鼠标在Image1上面拖动画一个矩形,然后将矩形里面的图形拷贝到Image2里面,并且如果我画的矩形还比Image2大的话,怎么拷贝啊???
 
区域大小没关系,它会放大缩小的。
 
请教一个问题,怎么才能让我的image1有右面和下面的拖动滑条啊,就象IE的下面和左面的移动窗口的滑条一样,,是设置什么属性啊
 
对TImage来说本身不行的,它只有AutoSize和Stretch二个属性来控制。

不过你可以把TImage放在一个ScrollBox中,可以达到你的效果
 
还有问题吗?
 
但是我的Image1调用了图形文件以后在上面用Canvas画矩形好像不可以啊,报错,说不能在已经调用了图形的bitmap上面画图
 
给你一段代码吧,你自己看看
var
isDraw :Boolean;
pts :array[0..1]of TPoint;

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

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

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
ARect :TRect;
begin
if IsDraw then
begin
ARect:=Rect(pts[0].X, pts[0].Y, X, Y);
with image1.Canvas do
begin
Pen.Mode := pmNotXor;
Rectangle(ARect);
Pen.Mode := pmCopy;
end;
Image2.BoundsRect:=Image1.BoundsRect;
image2.Canvas.CopyRect(Image2.BoundsRect, Image1.Canvas, ARect);

IsDraw:=false;
end;
end;

 
呵呵,帮忙帮到底 [:)]
 
多谢多谢!我来看看
 
还有防止图像闪,加下面
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=true;
end;
 
高手高手,,多谢!!
 
好像比较闪烁啊,有没有什么好方法能够去掉闪烁啊??
 
上面说了
procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=true;
end;
 
应该没问题了吧。Canvas.CopyRect的二个区域你可以自己修改的。
发分,呵呵
 
还有问题吗,等你5分钟,下线了
 
yostgxf:多谢你,问题已经解决了!!!
 
后退
顶部