[原创]Delphi XE Android/IOS 实现图片放大缩小的两种方法
{该文首发于博客园 滔Roy,无须授权即可转发,请自觉保留头部申明}
Delphi XE Android/IOS 实现图片放大缩小的两种方法
1、TImage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-06-26 Delphi 常见错误