共500分!!!Java awt 如何将输出到屏幕上的图像输出到图片 如果有好思路另开帖子另给分 本帖最后由 yaoyuhang 于 2010-05-14 15:12:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 截图试过么参考。http://blog.csdn.net/DL88250/archive/2007/03/31/1547557.aspx 想接分,但是实在不明白什么状况……1. 现状:输出到屏幕是啥意思? 显示到一个窗口了?还是啥样子?2. 想变更为生成图像,是指你的组件画到一个图片上?例如JPG图片,上面是你的原来的屏幕(窗口)的样子(布局)?3. 生成出来的图像,你不会还想当画面用吧?? 大概是把主窗口的重绘方法绘制到内存的image中,如果窗口隐藏时重绘方法不触发,需要自己触发重绘! shine333的就可行也可以直接重载paint方法,把g重定向到一个图像上,这样屏幕上就会只剩下一个框子了为了隐去这个框子,你可以给你的整个窗口设置位置到屏幕外面去例如加一句setLocation(10000, 0);@Override public void paint(Graphics g) { BufferedImage img = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB); g = img.getGraphics(); super.paint(g); try { ImageIO.write(img, "PNG", new File("c:/test.png")); } catch (IOException e) { e.printStackTrace(); } } 就是原有程序把图行内容在屏幕上输出了???=========既然都能做到这一步了,那肯定是能得到相应的输出流了,而你把图形内容输入到屏幕上,说明有一个图片容器,通过某种方法将输出流输送到这个容器中以达到图形在屏幕显示的效果。既然如此,你就应该能得到内存中的图形缓冲区对象,有了这个对象,你在图形输出前定义个FileOutputStream,用什么方法输到屏幕的就用什么方法输出到这个文件输出流不就OK了嘛? 这里下载http://download.csdn.net/source/2354374 都不知道啥效果,就10个资源分,太黑了吧……发个可执行jar出来,看看效果,再决定要不要下载source 感谢大家的热情参与,根据 shine333 高手的指点。问题基本解决了。马上根据各位的热情参与度散分。shine333 的代码的精髓我正在整理,整理后再公布给大家。便于大家学习。To: ABBuggy 抱歉,您提供的代码我没来得及参考。估计也一定是高手。 已经结贴。不知道给各位的分数是否满意。哈哈如果不满意,可以站内联络我,我尽量平衡大家。这里最委屈的要算,ABBuggy 了。真的抱歉,没来的及拜读您的代码。各贴给你合计的分数可能不高,您别介意。我在公司下载您代码不方便,您不妨贴出来,如果确实也解决该问题,我另开贴子给您分。 先总结该贴如下:1,问题: 元某C/S程序,C端处理比较复杂,用继承AWT的自制控件,绘制线图,柱图,等混合图形。先想将这部分处理移植成Web程序。由于生成的图形,在IE端只是浏览,没有鼠标操作,所以考虑在Web服务器上,留用原来代码生成Image文件后,发给IE端。这样移植代价最小。2,shine333 提供的最佳方案 (解释不准确的地方,请高手指正) AWT中有一个容器类 Container 。绘制在JFrame上的控件,都被包含在该容器中。该类提供paint和paintComponents方法,支持将容器中所有控件描绘到 Graphics 对象中。 这样就解决了,在Web服务器上,隐藏方式的绘制图形(不同于用robot方式的拷贝屏幕)。而且不受运行程序个数的限制(这一点也不同于用robot方式的拷贝屏幕)。3,补充学习(让高手见笑了) AWT包,提供了GUI的class。这些class可以分成3大类。 第一类。 单纯的GUI控件。按钮,滚动条,表格等等。 他们都在 java.awt.Component 下 第二类。 控件的事件类。 他们都在 java.awt.Evnet 下 第三类。 就是存放控件的场所,负责控件在视觉上的摆放,层的管理等。比如这次用的 Container和 LayoutManager。 了解了这三大类的作用,下次在遇到类似问题,就好找入手的地方了。再次感谢各位的热情参与。谢谢。 SQL语句 java实现英语数字翻译阿拉伯数字,求大神 数组问题 请高手对初学者学习JAVA提几点建议,万分感激。 如何将一个数字格式化的字符串逆转。 Java怎么将字符转成无符号字节 readLine的判断条件是\n还是\r还是\r\n? 怎么将string类型转为inputstream类型? 谁有JCreator Pro V2.50 Build 009 的注册码? java客户端与vb的服务器端连接。 在线等!重命名文件夹的问题 关于IO流
参考。
http://blog.csdn.net/DL88250/archive/2007/03/31/1547557.aspx
2. 想变更为生成图像,是指你的组件画到一个图片上?例如JPG图片,上面是你的原来的屏幕(窗口)的样子(布局)?
3. 生成出来的图像,你不会还想当画面用吧??
setLocation(10000, 0);@Override
public void paint(Graphics g) {
BufferedImage img = new BufferedImage(getWidth(), getHeight(),
BufferedImage.TYPE_INT_ARGB);
g = img.getGraphics();
super.paint(g);
try {
ImageIO.write(img, "PNG", new File("c:/test.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
=========既然都能做到这一步了,那肯定是能得到相应的输出流了,而你把图形内容输入到屏幕上,说明有一个图片容器,通过某种方法将输出流输送到这个容器中以达到图形在屏幕显示的效果。
既然如此,你就应该能得到内存中的图形缓冲区对象,有了这个对象,你在图形输出前定义个FileOutputStream,用什么方法输到屏幕的就用什么方法输出到这个文件输出流不就OK了嘛?
http://download.csdn.net/source/2354374
都不知道啥效果,就10个资源分,太黑了吧……
发个可执行jar出来,看看效果,再决定要不要下载source
马上根据各位的热情参与度散分。shine333 的代码的精髓我正在整理,整理后再公布给大家。
便于大家学习。To: ABBuggy 抱歉,您提供的代码我没来得及参考。
估计也一定是高手。
真的抱歉,没来的及拜读您的代码。各贴给你合计的分数可能不高,您别介意。
我在公司下载您代码不方便,您不妨贴出来,如果确实也解决该问题,我另开贴子给您分。
1,问题:
元某C/S程序,C端处理比较复杂,用继承AWT的自制控件,绘制线图,柱图,等混合图形。先想将这部分处理移植成Web程序。由于生成的图形,在IE端只是浏览,没有鼠标操作,所以考虑在Web服务器上,留用原来代码生成Image文件后,发给IE端。这样移植代价最小。2,shine333 提供的最佳方案 (解释不准确的地方,请高手指正)
AWT中有一个容器类 Container 。绘制在JFrame上的控件,都被包含在该容器中。该类提供paint和paintComponents方法,支持将容器中所有控件描绘到 Graphics 对象中。
这样就解决了,在Web服务器上,隐藏方式的绘制图形(不同于用robot方式的拷贝屏幕)。而且不受运行程序个数的限制(这一点也不同于用robot方式的拷贝屏幕)。3,补充学习(让高手见笑了)
AWT包,提供了GUI的class。这些class可以分成3大类。
第一类。
单纯的GUI控件。按钮,滚动条,表格等等。
他们都在 java.awt.Component 下
第二类。
控件的事件类。
他们都在 java.awt.Evnet 下
第三类。
就是存放控件的场所,负责控件在视觉上的摆放,层的管理等。比如这次用的 Container和 LayoutManager。
了解了这三大类的作用,下次在遇到类似问题,就好找入手的地方了。再次感谢各位的热情参与。谢谢。