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)
解决方案 »
- 怎样判断一个字符串中不能包括除汉字以外的字符?
- 请Seamour来接分
- 怎样禁掉“双击fastreport打开编辑界面”?
- 高分求怎样从DLL中装载ANI光标?
- 如何实现多行列标题呢,treeview 与数据库连接起来,各位有没好办法
- 今天心情很不好,又有一个同事走了,我们要怎样才能留住人才呢?
- 怎么判断系统安装在那个目录下(比如:c:\windows或是d:\winnt),谢谢
- 谁能给我一个完整的数据备份和清除历史记录的代码???
- 请问如何用程序触发Edit的Exit事件?
- sql语句:查询每种商品的最大销售量及商品代码(每种商品有一次以上的销售记录),请问该如何写?
- 如何把文本文件导入数据库表中
- 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的设置也做相同处理