图片处理,有一个图片在Image控件中显示,我想在图片上取一块区域:Image1.Canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);由

  • 主题发起人 主题发起人 zxq3034
  • 开始时间 开始时间
Z

zxq3034

Unregistered / Unconfirmed
GUEST, unregistred user!
图片处理,有一个图片在Image控件中显示,我想在图片上取一块区域:Image1.Canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);由于区域太大,一屏放不上,我想把图片缩小后再选取这块区域,把p1,p2保存下来,然后去原图片上截取这块区域,求大哥哥帮我看看这个区域怎么在缩小 ( 积分: 100 )<br />图片处理,有一个图片在Image控件中显示,我想在图片上取一块区域:Image1.Canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);由于区域太大,一屏放不上,我想把图片缩小后再选取这块区域,把p1,p2保存下来,然后去原图片上截取这块区域,求大哥

哥帮我看看这个区域怎么在缩小后的图片上取出来。(急..急)
 
Image.Stretch := True ;
////
BitBlt(Self.Canvas.Handle,0,0,Image1.Width,Image1.Width,
Image1.Canvas.Handle,0,0,SRCCOPY )
 
我是用以下方法在图片上画的区域,由于这个区域太大,屏幕上一屏显示不全,选择的时

候不方便,我想把图片缩小,然后在缩小的图片上选出此区域(p1,p2),然后再在原图片

上用p1,p2的值取出相应的区域,关键是这个p1,p2怎么计算才能在原图片上取出相应的区

域。
var
p1 //起点坐标
,p2 : TPoint; //终点坐标

procedure TfrmMain.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if shift= [ssCtrl,ssleft] then
with Image1 do
begin
Canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);
Canvas.Pen.Mode :=pmNotXor;
p2 :=Point(x,y);
Canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);
end;
end;

procedure TfrmMain.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
p1 :=Point(x,y);
p2 :=p1;
end;

procedure TfrmMain.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
p2 :=Point(x,y);
end;
 
记得原图与缩图的比率不就可以了吗?
 
另外
if shift= [ssCtrl,ssleft] then
// with Image1.Picture.Bitmap do
begin
Canvas.Rectangle(Image1.Left + p1.x, Image1.Top +p1.y,Image1.Left + p2.x,Image1.Top + p2.y);
Canvas.Pen.Mode :=pmNotXor;
// Canvas.Pen.Color := clRed ;
p2 :=Point(x,y);
Canvas.Rectangle(Image1.Left + p1.x, Image1.Top +p1.y,Image1.Left + p2.x,Image1.Top + p2.y);
end;
 
谢谢你:ztf86781163
我搞定了,把分给你吧
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
612
import
I
后退
顶部