image.stretch为true的话,图片会适应image的大小。算一下图片和image的比例,然后对你的鼠标所定位的矩形进行一下坐标变换吧。
比方说:image为100(w)*100(h),图片为200*200。鼠标取得的矩形为(50, 50, 100, 100),那么实际的矩形就应该为(100, 100, 200, 200)
比方说:image为100(w)*100(h),图片为200*200。鼠标取得的矩形为(50, 50, 100, 100),那么实际的矩形就应该为(100, 100, 200, 200)
解决方案 »
- 收到CSDN寄来的书和台历了
- 请问达人们哪里可以下delphi的控件的参考手册的.能否顺便讲讲OleVariant的作用,属性呢?谢谢!
- 申请版主->>>系统设计 ,大家支持一把。
- 怎么样使程序运行时,treeview里面的列自动展开,现在运行时没有展开,只有点了+号后才展开
- 请高手来帮我解决在ADO主、从表存储和触发器有效结合的问题!真诚期望您的帮忙!
- delphi xe2 版本号没有办法递增
- 我是一名DELPHI程序员,想转开发工具,请参与讨论
- batchmove的问题
- 有没有用delphi做开发的兄弟?项目合并寻求供应商.
- dspack制作的简单视频播放功能中的stop的问题
- 如何把文本文件导入数据库表中
- ADO连接SQL SERVER的问题
procedure TForm1.RecreatePicture;
Var bmp : TBitmap;
r : TRect;
begin
If Not Image1.Stretch Then Exit; Image1.Picture.Bitmap;
Bmp := TBitmap.Create;
bmp.Width := Image1.Width;
bmp.Height := Image1.Height;
r := Bounds( 0, 0, bmp.Width, bmp.Height );
bmp.Canvas.StretchDraw( r, Image1.Picture.Graphic );
Image1.Picture.Assign(bmp);
bmp.Free;
end;2、如果想保存缩放后的选择区域对应的原图内容,则修改bx,by,sx,sy的赋值如下:
If Not Image1.Stretch Then
Begin sx := x; sy := y; End
Else
Begin
sx := Round(x*(image1.Picture.Width / image1.Width));
sy := Round(y*(image1.Picture.Height / image1.Height));
End;
bx,by的设置也做相同处理