我想将画布的当前状态保存为图像,因为我将在下一个pointerevent中使用它。如果我使用重绘它将清除画布,我无法获得以前的画布状态。所以,我想把它保存为图像,然后一遍又一遍地迭代它,这样我最终可以弄清楚我想要的东西。 最后一个问题是如何将画布保存为图像? 或者是否有可能将Graphics对象转换为字节数组?
答案 0 :(得分:1)
您无法将画布保存为图像。
您必须先创建一个图像,然后才能在该图像上绘画。
基本上这意味着你的midlet会做更多的工作,因为你首先必须绘制你的图像,然后你必须将该图像绘制到画布上。但这是你能做到你想要的唯一方式。
答案 1 :(得分:1)
创建一个屏幕大小(宽度和高度)相同的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());
}
}