hisun 发表于 2013-7-5 23:54:33

菜鸟求教:VB图像浏览缩放控件如何才能将图片以中心进行...?

网上下的代码,SuperPicGroup,我打开里面的世界地图这张图片并移动它后,当我想要进行缩放的时候是以当前控件中的图片中心进行缩放,而不是例子中的以整张图片的中心进行缩放.就是要象acdsee那样能够以当前显示图片内容的中心点来进行缩放.
我这只菜鸟试了很长时间没有实现,不知道在用户控件的CheckForScrolls()下缩放后如何计算滚动条的Value值来确定以中心点缩放.因为自己技校连高中的数学都没学全不懂得计算方法,源码上传,有兄弟熟悉的请指点指点.

crane_may 发表于 2013-7-10 17:19:14

潜水好久了,也做做力所能及的贡献

你说的问题应该是缩放图片时,保持视区的不动点吧。我随便画了个图示意一下。


原图的大小是org_width * org_height,图一的缩放比例是scale1,图二是scale2。红色框是可视区域,也就是你说的控件区域
需要做到的应该是从scale1变换到scale2时,保持猫的右眼始终在中心位置,也就是说不动点是 (c_x, x_y)。按你的意思可以使 c_x == screen_width/2

因为图片是按照比例缩放,就有:
(scroll_x1 + c_x) / (scroll_x2 + c_x) == scale1 / scale2
(scroll_y1 + c_y) / (scroll_y2 + c_y) == scale1 / scale2

==>

scroll_x2 = (scroll_x1 + c_x) / scale1 * scale2 - c_x
scroll_y2 = (scroll_y1 + c_y) / scale1 * scale2 - c_y

有了这两个公式应该就行了。

如果有问题请指正

hisun 发表于 2013-7-10 17:37:42

crane_may 发表于 2013-7-10 17:19 static/image/common/back.gif
潜水好久了,也做做力所能及的贡献

你说的问题应该是缩放图片时,保持视区的不动点吧。我随便画了个图示意 ...

谢谢了,我的意思就是要那样进行缩放,自己一直迷惑不知道怎么计算,比例来比例去都是错的.
非常感谢你的帮助!
页: [1]
查看完整版本: 菜鸟求教:VB图像浏览缩放控件如何才能将图片以中心进行...?