我想将画布的当前状态保存为图像,因为我将在下一个pointinterevent中使用它。如果我使用repaint,它将清除画布,我无法获得画布的先前状态。我想把它存为图像然后反复迭代这样我就能知道我想要什么了。最后一个问题是如何将画布保存为图像?或者是否有可能将图形对象转换为字节数组?
不能另存为图片
你必须先创建一个图像,然后你才能在这个图像上作画。
基本上这意味着你的midlet将做更多的工作,因为你首先必须绘制到你的图像,然后你必须将该图像绘制到画布上。但这是你做你想做的事的唯一方法。
创建与屏幕大小(宽度和高度)相同的Image
。当你想保存画布状态时,调用Canvas.paint
传递图像Graphics
。
class MyCanvas extends Canvas {
private Image lastScreen;
protected void sizeChanged(int w, int h) {
if (lastScreen == null || w != lastScreen.getWidth()
|| h != lastScreen.getHeight) {
lastScreen = Image.createImage(w, h);
}
}
protected void paint(Graphics g) {
// paint the whole screen
}
protected void pointerReleased(int x, int y) {
paint(lastScreen.getGraphics());
}
}