delphi中使用mapx想用鼠标滚轮实现自定义倍率的缩放,并且限制一定的缩放倍数
来源:互联网 发布:客户地图制作软件 编辑:程序博客网 时间:2024/05/16 07:04
我将只有将MousewheelSuppor属性设置成 miMousewheelNoAutoScroll或 miFullMousewheelSupport才能触发Mapx的MouseWheel事件。miNoMousewheelSupport不能。我设置成了miMousewheelNoAutoScroll,但是在MouseWheel中不管将map1.Zoom:= map1.Zoom*1.5;设置成几倍,最终都会按照系统默认的2倍进行缩放。
我想实现缩放到一定倍数后便不能再缩放的功能,走投无路之时,想了一个变态的方法勉强能应付
procedure TFrmMain.Map1MouseWheel(ASender: TObject; Flags: Integer;
zDelta: Smallint; var X, Y: Single; var EnableDefault: WordBool);
var mapX,mapY:double;
begin
map1.ConvertCoord(X,Y,mapX,mapY,miScreenToMap);//映射坐标 以指针所在位置居中缩放
map1.Hint:='';
if zDelta=120 then//滚轮向前放大
if map1.Zoom<StartZoom*0.5 then begin//StartZoom 为我的初始大小[color=#FF0000]integer[/color]类型,避免double类型小数不准确问题
map1.Zoom:=map1.Zoom*2;//这里是为了解决自动放大两倍而先缩小2倍抵消用
map1.Hint:='已经最大';
end
else begin
map1.CenterX:= mapX;
map1.CenterY:= mapY;
end
else if zDelta=-120 then//滚轮向后缩小
if (Round(map1.zoom)>=StartZoom) then begin
map1.Zoom:=map1.Zoom*0.5;//这里是为了解决自动缩小两倍而先放大2倍抵消用
map1.Hint:='缩小至最佳';
map1.CenterX:= StartCenterX;//初始中心位置
map1.CenterY:= StartCenterY;
end
else begin
map1.CenterX:= mapX;
map1.CenterY:= mapY;
end
end;
最终有个问题就是,一旦滚轮转的太快或者一直转仍然会继续放大缩小,唉,我能做的只有这么多了
- delphi中使用mapx想用鼠标滚轮实现自定义倍率的缩放,并且限制一定的缩放倍数
- 鼠标滚轮实现图片的缩放-------Day79
- 鼠标滚轮实现图片的缩放
- unity3D 鼠标滚轮实现物体的大小缩放
- c#中鼠标滚轮对PictureBox的缩放
- 在C#中实现图片缩放(含asp.net用鼠标滚轮实现图片缩放)
- WPF 鼠标滚轮对图片的缩放
- 鼠标滚轮实现图片缩放
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- 在unity中用鼠标实现在场景中拖动物体,用鼠标滚轮实现缩放
- 利用鼠标滚轮实现图片缩放
- Arcengine9.2+java鼠标滚轮缩放实现
- jQuery 鼠标滚轮实现图片缩放
- QT界面,鼠标滚轮实现缩放问题
- jquery 鼠标滚轮实现图片缩放
- jquery 鼠标滚轮实现图片缩放
- java常用正则表达式
- CSS3实现DIV圆角完整代码
- 自动挂载NFS目录的两个办法
- Eclipse插件
- iis设置Gzip后,无后缀的url无法压缩解决
- delphi中使用mapx想用鼠标滚轮实现自定义倍率的缩放,并且限制一定的缩放倍数
- Linux 信号signal处理函数
- tar 基本操作
- 做测试的方向
- [Android]将应用崩溃信息汇报给开发者并重新启动应用
- Java程序员学习Flex和BlazeDS的十三个理由
- Linux 信号signal处理机制
- 蒙古人的战争
- CSDN博客频道“移动开发那点事”——主题征文活动(已结束)