您的位置:首页 > 其它

[分享]牛牛图片查看器[仿QQ图片查看器]及大致原理说明

2015-08-05 10:31 471 查看
这是一个完全通过Duilib来实现的一个图片查看器,仿照QQ图片查看器的效果实现,希望大家喜欢。

先看一下使用的截图吧:







做相关说明如下:

一:使用说明

1. 通过命令行调用,传递图片路径即可打开图片查看器,支持绝对路径与相对路径,如:ImageViewer.exe c:\test.png

2. 在窗口上双击可关闭程序

二:功能说明

1. 支持jpg、png、bmp、gif等4种格式图片

2. 支持图片拖动偏移后的平滑放大缩小;通过鼠标放大或窗口大小变化时,支持图片平滑适配

3. 支持非gif图片的翻转

4. 支持保存图片到本地

5. 支持按图片自动控制窗口的大小显示[打开进程时]

6. 支持通过上一张与下一张控制显示图片所在目录下的其他图片[按修改先后时间排序],并显示当前正在浏览哪一张

三:原理说明

额,好像也没啥好说的,大致就是利用duilib的现有特性功能来实现,比如在放大时,计算出图片的放大后的尺寸以及窗口的大小,进一步计算出存放图片的容器的POS信息,设置就好。

我认为这里需要注意的是图片在放大以后,通过鼠标拖动了图片,再放大时,要能保持在现有的中心处放大,而不是以原始图片的中心来放大或缩小;这样可以保证被拖放后的图片在二次放大或缩小时,整个是一个平滑的过程,也没啥技术含量,就是一些坐标的计算了。

这种工具技术性不强,就是一些细节调试需要花费比较多的时间,以上全部应用duilib的功能实现,没有自己写一行绘图的代码,有几点提一下:

1. 通过SetMouseEnabled来控制放大比例显示的层不响应鼠标事件,这样可以穿透在图片上的层,不至于会影响到放大后图片的位置拖放

2. 通过调整float控件的pos实现,支持负值的pos信息,通过设置pos信息来实现图片的拖动

3. 图片会被缓存,需要在翻转及切换图片时,先清理一下相应图片的缓存[paintmanager.RemoveImage(path)],防止切换后图片不更新或更新错

4. 至于其他窗口半透明啥的,咱们就不在这里讨论了,网上信息很多了 ^_^

5. 其他...

有任何问题,欢迎大家跟帖讨论,也可以加我QQ反馈:182534287

欢迎访问乖乖牛在线: http://www.ggniu.cn

示例程序下载:http://download.csdn.net/detail/tragicguy/8965903
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: