• 3444阅读
  • 2回复

ZOOM后,窗口定位问题(已解决) [复制链接]

上一主题 下一主题
离线xtfllbl
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-22
做了一个窗口,里面画了一些东西,并且可以用鼠标拖出橡皮筋框来对选定部分进行局部放大。
现在遇到的问题是,放大之后如何定位窗口显示之前选定部分的图像。

窗口我使用的是scrollarea,所以试着使用setValue(函数)来定位,但总有相当的偏差,有谁知道如何定位的,最好讲个函数,因为定位还是满有用的,可以长期参考

现在采用的定位方式:
  1.         int HValue = HScrollBar->maximum()*my->rectMidX*my->HIncrease/my->width();
  2.         int VValue = VScrollBar->maximum()*my->rectMidY*my->VIncrease/my->height();
  3.         HScrollBar->setValue(HValue);
  4.         VScrollBar->setValue(VValue);


方式上有问题也清指出,谢谢。

解决方法:BOSS说了,只要
  1.         my->HIncrease=my->width()*1./rect.width();
  2.         my->VIncrease=my->height()*1./rect.height();
  3.         int HValue = rect.x()*my->HIncrease;
  4.         int VValue = rect.y()*my->VIncrease;
  5.         HScrollBar->setValue(HValue);
  6.         VScrollBar->setValue(VValue);

就可以了,好神奇阿
[ 此帖被xtfllbl在2009-07-24 11:11重新编辑 ]
上海欢迎您
离线sbtree
只看该作者 1楼 发表于: 2009-07-22
实际上这种操作,用QGraphicsView/Scene做是最方便的了,因为只要你在scene中画好图,在view中作放大处理无需考虑重新定位的问题
windows 7 + VC++2008 + Qt4.5.2
离线xtfllbl

只看该作者 2楼 发表于: 2009-07-24
哦,谢谢,学习了。
上海欢迎您
快速回复
限100 字节
 
上一个 下一个