小菜最近在做一图片处理的软件,需要将不同大小的图片在有限的区域内显示出来,当然要用到缩放功能,之后要做框选剪切功能,但在图像一原大小显示时没问题,图像经过缩放后,鼠标mousedown时的点和矩形框的起始点不再一位置上,望各位大虾帮忙,指点一二。在此先谢过了分不多,见谅

解决方案 »

  1.   

    不知道你是不是用image来显示图片的,image.canvas和其中的Bitmap.Canvas是不一样的
    首先你要知道缩放比例,然后根据鼠标在image上的坐标范围,去放大这个比例系数,去计算,实际的bitmap上的范围
      

  2.   


    那样会不会改变图片的分辨率?
    我是用到image.canvas   从一个image剪掉到另一个  
    有种截屏的方法  但那会改变图片的分辨率
    对后面处理有影响
      

  3.   


    是这样子吗?  
    记录图片缩放的倍数,鼠标点击传进去的x,y是以image为参照的。
    然而这个x,y与image.picture.bitmap上的像素点是不对应的。
    那如果图像是放大n倍后剪切,x,y如何调整?
      

  4.   

    首先要明白一点:
    缩放image并不会自动处理其对应的bitmap所以要自己来做对应处理工作
    如下所示:Procedure TfrmMain.SetImageSize(w ,h : integer; img : TImage);
    begin
      with img do
      begin
        Width := w;
        Height := h;
        picture.bitmap.width:= w;
        picture.bitmap.height:= h;
      end;
    end;