Delphi XE Android/IOS 实现图片放大缩小的两种方法


本文整理自网络,侵删。

 

1、TImage

var
  LObj: IControl;
  LImage: TImage;
  LImageCenter: TPointF;
begin
  if EventInfo.GestureID = igiZoom then
  begin
    LObj := Self.ObjectAtPoint(ClientToScreen(EventInfo.Location));
    if LObj is TImage then
    begin
      if (not(TInteractiveGestureFlag.gfBegin in EventInfo.Flags)) and
        (not(TInteractiveGestureFlag.gfEnd in EventInfo.Flags)) then
      begin
        { zoom the image }
        LImage := TImage(LObj.GetObject);
        LImageCenter := LImage.Position.Point + PointF(LImage.Width / 2,
          LImage.Height / 2);
        LImage.Width := LImage.Width + (EventInfo.Distance - FLastDistance);
        LImage.Height := LImage.Height + (EventInfo.Distance - FLastDistance);
        LImage.Position.X := LImageCenter.X - LImage.Width / 2;
        LImage.Position.Y := LImageCenter.Y - LImage.Height / 2;
      end;
      FLastDistance := EventInfo.Distance;
    end;
  end;
 

2、TImageViewer


procedure TForm1.ImageViewer1Gesture(Sender: TObject;
  const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
  case EventInfo.GestureID of
    igiZoom:
    begin
      if (EventInfo.Distance - fDistance)/2 > 0 then ImageViewer1.BitmapScale:=ImageViewer1.BitmapScale + 0.01  else
      if (EventInfo.Distance - fDistance)/2 < 0 then ImageViewer1.BitmapScale:=ImageViewer1.BitmapScale - 0.01;
      fDistance:=EventInfo.Distance;
      Handled:=True;
    end;
  end;
end;
  

 

创建时间:2020.06.26  更新时间:

 

博客园 滔Roy https://www.cnblogs.com/guorongtao

相关阅读 >>

Delphi sendemail 邮件发送单元

Delphi bmp转换png

Delphi 除法 "/" 与 div 的不同

Delphi 新建文件 复制文件 重命名文件名时 文件存在自动重命名

Delphi创建密钥文件

Delphi 5-7 桥接让Delphi xe2 datasnap中间层支持Delphi低版本开发客户端

Delphi启动/停止windows服务,启动类型修改为"自动"

shellexecute的多种用法

Delphi timage 加上滚动条方法

Delphi 注入指定进程

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...