jojoxyz 2022-01-05 09:41 采纳率: 0%
浏览 81

如何能实现以鼠标位置为中心的图像放大和缩小呢?

在scrollbox上放一个image控件,可以通过下列代码实现图像的放大和缩小。这种方法很简单,就是利用image控件的AutoSize和Stretch属性实现,但这种方法是以左上角(image的left和top)为中心进行放大和缩小,用起来很不方便。如何能实现以当前鼠标位置为中心的图像放大和缩小呢?是不是要计算ScrollBox控件滚动条的位置?

var
  fdxs:integer;//缩放系数

procedure TMDIChild.FormCreate(Sender: TObject);
begin
  fdxs:=100;
end;


procedure TMDIChild.ScrollBox1MouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
  fdxs:=fdxs+10;
  if fdxs>200 then
  begin
    fdxs:=200;
  end
  else
  begin
    image1.AutoSize:=true;
    image1.Stretch:=false;
    image1.AutoSize:=false;
    image1.Stretch:=true;
    image1.Height:=trunc(image1.Height * fdxs/100) ;
    image1.Width:=trunc(image1.Width * fdxs/100);
  end;
end;

procedure TMDIChild.ScrollBox1MouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
  fdxs:=fdxs-10;
  if fdxs<60 then
  begin
    fdxs:=60;
  end
  else
  begin
    image1.AutoSize:=true;
    image1.Stretch:=false;
    image1.AutoSize:=false;
    image1.Stretch:=true;
    image1.Height:=trunc(image1.Height * fdxs/100) ;
    image1.Width:=trunc(image1.Width * fdxs/100);
  end;
end;
 

  • 写回答

2条回答 默认 最新

  • Admini$trat0r .net领域新星创作者 2022-01-05 09:55
    关注

    image设置可拖拽 用鼠标拖拽

    评论

报告相同问题?

问题事件

  • 创建了问题 1月5日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度