做了一个窗口,里面画了一些东西,并且可以用鼠标拖出橡皮筋框来对选定部分进行局部放大。
现在遇到的问题是,放大之后如何定位窗口显示之前选定部分的图像。
窗口我使用的是scrollarea,所以试着使用setValue(函数)来定位,但总有相当的偏差,有谁知道如何定位的,最好讲个函数,因为定位还是满有用的,可以长期参考
现在采用的定位方式:
- int HValue = HScrollBar->maximum()*my->rectMidX*my->HIncrease/my->width();
- int VValue = VScrollBar->maximum()*my->rectMidY*my->VIncrease/my->height();
- HScrollBar->setValue(HValue);
- VScrollBar->setValue(VValue);
方式上有问题也清指出,谢谢。
解决方法:BOSS说了,只要
- my->HIncrease=my->width()*1./rect.width();
- my->VIncrease=my->height()*1./rect.height();
- int HValue = rect.x()*my->HIncrease;
- int VValue = rect.y()*my->VIncrease;
- HScrollBar->setValue(HValue);
- VScrollBar->setValue(VValue);
就可以了,好神奇阿[ 此帖被xtfllbl在2009-07-24 11:11重新编辑 ]