【发布时间】:2015-12-06 09:24:03
【问题描述】:
我正在尝试序列化一个Canvas 实例(使用Serializable 接口),我在该实例上绘制了一些像素,如下代码所示:
Canvas board = new Canvas();
Graphics g = board.getGraphics();
g.setColor(Color.BLACK);
g.drawString("txt", 10, 20);
g.dispose();
然后,当我序列化 board 时,它不会保存我绘制的像素。我猜这是因为通过使用getGraphics() 我没有将这些像素保存到任何实例中,所以我想也许我应该从Canvas 的paint() 方法中进行绘制。序列化Canvas 然后也保存修改后的像素吗?如果没有,我有什么选项可以使用我修改过的像素来保存/序列化Canvas?我猜我必须序列化Graphics 对象而不是Canvas?我是 Java 图形的新手,任何帮助将不胜感激。
更清楚地说,我要做的是使用序列化将我放在Canvas 实例上的像素保存到文件中。然后稍后我需要从我之前保存的序列化文件中重新加载这个Canvas 实例,这样当我在屏幕上使用它时,我会看到我在序列化Canvas 之前修改的完全相同的像素。我知道如何序列化对象等等。我只是不清楚所有像素都存储在哪里。
更新1:
用户在屏幕上绘制内容的方式是左键单击Canvas 区域。然后MouseListener 调用下面的方法,传递Point 指定鼠标xy 的对象:
private void drawAt(Point p)
{
Graphics g = board.getGraphics();
g.setColor(brushColor);
g.setFont(brushFont);
g.drawString(brushText, p.x, p.y);
g.dispose();
}
【问题讨论】:
标签: java canvas serialization