wtz
deepin
2017-10-10 11:01 支持一下。
随手编译了一遍,发现两个小问题:
1、view/module/view/view.pri文件没有修改,需要分别在HEADERS和SOURCES两个区域增加上新的文件名;
2、viewer/module/view/scen/imageview.h文件的第23行,相对路径有误(可能是编译环境问题?)。
此外,打开一幅图片并缩放,然后查看其他图片,之前的缩放值并没有被保留。所以想问问楼主应当如何测试此功能?
随手编译了一遍,发现两个小问题:
1、view/module/view/view.pri文件没有修改,需要分别在HEADERS和SOURCES两个区域增加上新的文件名;
2、viewer/module/view/scen/imageview.h文件的第23行,相对路径有误(可能是编译环境问题?)。
此外,打开一幅图片并缩放,然后查看其他图片,之前的缩放值并没有被保留。所以想问问楼主应当如何测试此功能?
Reply Like 0 View the author


中文 

我在windows上使用2345看图王很久了,感觉有2个功能非常不错,一是他能在一次会话中,记住每张浏览过的图片的位移、缩放历史,再次返回看过的图片时,能保持刚才的查看状态,这点尤其是在需要对比多张图片的局部细节时非常有用!二是只需要移动鼠标到某个位置,不需要点击就是默认以鼠标悬停位置作为缩放中心点(深度看图需要点击一次,不习惯,刚开始还以为没有设定缩放中心的功能呢!)于是我想在深度看图中实现此功能!!战斗开始了……
ps:电信网络访问github非常慢,而且网页打开不全,无法直接git提交,源代码都是在手机上用uc下载的(貌似uc有代理?很快)
然而,我是从大学毕业后,自学了几个月c++就因为工作原因,转战php、java阵营,c++那些复杂的指针、地址什么的已经忘得差不多了,需要重新捡起来,还需要熟悉qtcreator。
麻烦的过程¥%#%%%
大致查看代码后,发现图像缩放、平移等核心功能都是依托了QGraphicsView来实现的。于是想要取巧,单纯采用模拟鼠标点击的方式实现所有功能,结果只是成功实现了不用点击鼠标设定缩放中心。
imageview.cpp:
为了实现记录缩放、平移图片的历史记录,新增了一个viewHistory类记录操作历史,主要包括缩放值、图像scene坐标系的中心x,y。在imageview中增加了一个map对象QMap<QString,viewHistory*> m_history 作为历史记录hash表。
记录历史:在wheelEvent、mouseReleaseEvent事件处理函数中使用setHistoryCenter()记录图像的scene坐标系中心(查看文档+测试,好久才搞清楚view、scene、image的坐标转换的正确方式,scene的大小是个坑,一直以为会随着items的布局和大小而变化,结果是固定值!)
终于成功实现了我想要的功能。希望官方能继续完善并加上这2个功能!
sourceCode.zip
sourceCode.zip