Graphics 的 drawImage() 为什么有时画不出来?

u010116554 2014-12-23 12:00:50


上面这个程序中g.drawImage可以画出桌面



但是程序改成这样就画不出来了

这是怎么回事?
...全文
471 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010116554 2014-12-23
  • 打赏
  • 举报
回复
在第二个程序中 导入 import java.lang.Thread; 再把 Sub_JFrame 的 draw 方法改成 public void draw(){ Graphics g = this.getGraphics(); try{ Thread.sleep(53); }catch(Exception e){ e.printStackTrace(); } g.drawOval(0,0,100,100); g.drawImage(desktop,0,0,null); } 就是加个延时,又能画出来了,这是怎么回事? 那个 53延时 是最小的延时,再小改成 52 以下就又画不出来了,这是怎么回事?
u010116554 2014-12-23
  • 打赏
  • 举报
回复
第二个: import javax.swing.JFrame; import java.awt.Image; import java.awt.Robot; //(自动)机器人类,本程序用于截屏 import java.awt.Dimension; import java.awt.Toolkit; import java.awt.Rectangle; import java.awt.Graphics; public class L{ public static void main(String[] args){ //new Sub_JFrame().setVisible(true); Sub_JFrame sj = new Sub_JFrame(); sj.setVisible(true); sj.draw(); } } class Sub_JFrame extends JFrame{ Image desktop; Dimension size; Sub_JFrame(){ this.init(); } private void init(){ this.setUndecorated(true); //设置未装饰 —— 无边框外饰 this.setExtendedState(JFrame.MAXIMIZED_BOTH); //设置扩展状态 —— 横纵双向最大化 size = Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕尺寸 try{ //捕获屏幕(截屏) desktop = new Robot().createScreenCapture(new Rectangle(0,0,(int)size.getWidth(),(int)size.getHeight())); }catch(Exception e){ e.printStackTrace(); } this.setDefaultCloseOperation(Sub_JFrame.DISPOSE_ON_CLOSE); //正常关闭程序, } /*public void paint(Graphics g){ g.drawImage(desktop,0,0,null); }*/ public void draw(){ Graphics g = this.getGraphics(); g.drawImage(desktop,0,0,null); } }
u010116554 2014-12-23
  • 打赏
  • 举报
回复
第一个: import javax.swing.JFrame; import java.awt.Image; import java.awt.Robot; //(自动)机器人类,本程序用于截屏 import java.awt.Dimension; import java.awt.Toolkit; import java.awt.Rectangle; import java.awt.Graphics; public class L{ public static void main(String[] args){ new Sub_JFrame().setVisible(true); /*Sub_JFrame sj = new Sub_JFrame(); sj.setVisible(true); sj.draw();*/ } } class Sub_JFrame extends JFrame{ Image desktop; Dimension size; Sub_JFrame(){ this.init(); } private void init(){ this.setUndecorated(true); //设置未装饰 —— 无边框外饰 this.setExtendedState(JFrame.MAXIMIZED_BOTH); //设置扩展状态 —— 横纵双向最大化 size = Toolkit.getDefaultToolkit().getScreenSize(); //获取屏幕尺寸 try{ //捕获屏幕(截屏) desktop = new Robot().createScreenCapture(new Rectangle(0,0,(int)size.getWidth(),(int)size.getHeight())); }catch(Exception e){ e.printStackTrace(); } this.setDefaultCloseOperation(Sub_JFrame.DISPOSE_ON_CLOSE); //正常关闭程序, } public void paint(Graphics g){ g.drawImage(desktop,0,0,null); } /*public void draw(){ Graphics g = this.getGraphics(); g.drawImage(desktop,0,0,null); }*/ }

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧