Java:Graphics(2D)画图报错或失败怎么办?
Graphics(2D)的drawImage()方法画图有时候会出现一些问题。下面就是这些错误的原因和解决方法。
- Image对象的问题(图像并没有被绘制)
原因:先举个例子:文章编写者的java.awt.Toolkit类好像出现了问题。用java.awt.Toolkit.getDefaultToolkit().get(create)Image方法好像出现了一点问题,返回的Image的长宽都是-1。如果有一样的情况,请参考下面的解决方案。
可能的解决方案:使用javax.imageio.ImageIO的read()方法获取图像。
- Image对象的问题(报错NullPointerException)
原因:Image对象的值是null。
可能的解决方案:想办法获取一张值不是null(还有长宽不能是-1)的图片。
- Graphics(2D)对象的问题(图像或其他要绘制的东西并没有被绘制)
原因:想要用JFrame的getGraphics()把图像或其他要绘制的东西画到一个JPanel上,那显然是不可能的。还有,用Image类提供的getGraphics()方法似乎没啥用。
可能的解决方案:建议用继承了Canvas(或JPanel)的类重写paint(Graphics g)方法获得的Graphics绘制图像或其他要绘制的东西。
- Graphics(2D)对象的问题(报错NullPointerException)
原因:Graphics(2D)对象的值是null。顺便说一句,使用JPanel(或JFrame)的getGraphics()方法得到的Graphics对象有99.999%是null。
可能的解决方案:跟“Graphics(2D)对象的问题(图像或其他要绘制的东西并没有被绘制)”一样。
- Graphics2D对象的问题(倾斜或旋转过度导致看不见图像)
原因:原因其实很简单,比如像执行完g2.shear(100,100)和g2.rotate(Math.toRadians(180)) (g2是Graphics2D对象) 这样荒谬的代码再用g2画图像或其他要绘制的东西,肯定看不见啊。
可能的解决方法:不要倾斜或旋转那么夸张就好了。
以上的就是所有作者亲身经历过的画图失败的原因和解决方法。