论坛首页 Java企业应用论坛

swing做的旋转式浏览图片小软件

浏览 7850 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-08-08  
    学java大半年了,近来无聊,今天花了一天时间用swing做了一个图片浏览器,不同以前的用树形结构保存图片名称,这次是采用一个圆形浏览,当然看到的图片是放在一个椭圆周上,当转动图片查看下一张时,图片不是瞬间交换位置,而是有一个沿圆周的移动过程。动态移动过程贴不出来,贴两个静态效果图:
浏览界面效果:



右键点击某一个图查看原图的效果:



    不知道图片能不能上传。
    其实思路还是很简单的,一个继承自Ractangle2D的ImageArea,一个管理众多ImageArea的ImageFrame,一个显示ImageFrame的ImageShow,外加一个JFrame。显示上除了ImageShow面板外,还有一些额外的面板,比如监控内存,显示图片分组,左右旋转的按钮(其实可以不要,因为鼠标点击含有这个功能),打开文件夹按钮等。侦听器方面基本是完全自己根据鼠标的当前位置来判断动作,左转还是右转,转动还是查看原图片,等。
    当然,要做到旋转式浏览图片,还是有一些细节的,比如给ImageArea设置zBuffer,以决定画图的先后顺序;旋转时实时更新zBuffer,以准确画出图片的位置和大小;旋转动作另设线程等。
    还是有很多不足的,最大的就是内存了,,当图片很大时,显示太慢甚至不能显示,我的最大虚拟内存是64M,机器配置是赛扬M1.6G,很老的。我采用的粗劣的方法是,传参给底层ImageArea的是图片名称,要画时再加载图片,可是这样很伤CPU啊!图大时动作就超慢。可是如果传参Image,那就干脆在加载时就溢出了。。。不知道怎么解决才好,本人菜鸟。。
    有时间再写细节。。
    (图片素材来自网络)
  • 大小: 134.3 KB
  • 大小: 142.1 KB
   发表时间:2011-08-08  
这个必须顶,呵呵,就喜欢这种未受世俗污染的纯洁作品。
0 请登录后投票
   发表时间:2011-08-08  
看见那个“图片列表”的javax.swing.border.TitledBorder边框,我就知道你使用得是NB IDE
0 请登录后投票
   发表时间:2011-08-08  
george_space 写道
看见那个“图片列表”的javax.swing.border.TitledBorder边框,我就知道你使用得是NB IDE

不好意思,没用NB,只是把LookAndFeel设成系统外观而已,外观没怎么做,用的eclipse
0 请登录后投票
   发表时间:2011-08-09  
楼主能否把源码给大家共同学习一下!
0 请登录后投票
   发表时间:2011-08-09  
不错,蛮好看
0 请登录后投票
   发表时间:2011-08-09  
做的不错.
图片的问题,一直都很烦人,目前我们也没找到很好的解决办法.
0 请登录后投票
   发表时间:2011-08-09  
很好看 不错
0 请登录后投票
   发表时间:2011-08-09  
是否可以引入缩略图机制 当图片分辨率过大时,直接对图片生成一个缩略的镜像,只引入镜像,待用户想查看原图时,再载入原图,貌似开源项目里 有>1个类似项目 [如:Thumbnailator和Jmagick (刚搜索出来的)]
0 请登录后投票
   发表时间:2011-08-09  
diferent 写道
是否可以引入缩略图机制 当图片分辨率过大时,直接对图片生成一个缩略的镜像,只引入镜像,待用户想查看原图时,再载入原图,貌似开源项目里 有>1个类似项目 [如:Thumbnailator和Jmagick (刚搜索出来的)]

这样做在载入图像时应该很慢吧?不过可以试一试。如果只是生成一个缩略图,应该不难,代码应该不多,可以自己写。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics