Я пытаюсь сериализация Canvas
экземпляра (с помощью интерфейса Serializable
), на котором я нарисовал несколько пикселей, как следующий код предполагает:Сериализация Canvas в Java
Canvas board = new Canvas();
Graphics g = board.getGraphics();
g.setColor(Color.BLACK);
g.drawString("txt", 10, 20);
g.dispose();
Тогда, когда я сериализация board
Безразлично» t сохранить пиксели, которые я нарисовал. Я предполагаю, что это связано с тем, что, используя getGraphics()
, я не сохраняю эти пиксели в любом экземпляре, поэтому я подумал, что, возможно, вместо этого я должен рисовать с помощью метода Canvas
paint()
. Будет ли сериализовать Canvas
, а затем сохранить измененные пиксели? Если нет, то каковы мои варианты сохранения/сериализации Canvas
с пикселями, которые я изменил? Я предполагаю, что мне пришлось бы сериализовать объект Graphics
вместо Canvas
? Я новичок в Java-графике, любая помощь будет с благодарностью оценена.
Чтобы быть более ясным, то, что я пытаюсь сделать, это иметь пиксели, которые я наложил на экземпляр Canvas
, сохраненный в файл с использованием сериализации. Затем позже мне нужно перезагрузить этот экземпляр Canvas
из сериализованного файла, который я сохранил ранее, так что, когда я его использую на экране, я вижу точные пиксели, которые я модифицировал непосредственно перед тем, как я сериализовал Canvas
. Я знаю, как сериализовать объекты и все такое. Я просто не знаю, где хранятся все пиксели.
Update1:
Путь пользователь рисует что-то на экране, щелкнув левой кнопкой мыши на Canvas
области. Затем MouseListener
вызывает следующий метод, проходя по Point
объекта с указанием ху мыши:
private void drawAt(Point p)
{
Graphics g = board.getGraphics();
g.setColor(brushColor);
g.setFont(brushFont);
g.drawString(brushText, p.x, p.y);
g.dispose();
}
Программа в основном похожа на mspaint или Photoshop, позволяет пользователю рисовать все, что угодно, на 'Canvas', поэтому я не уверен, смогу ли я сериализовать модель в этом случае, если я не буду отслеживать каждый x и y координаты мыши, которую они использовали для рисования, цвет, размер кисти и т. д. Вот почему я думал, что было бы проще просто сохранить пиксели, а не все случайные шаги, которые пользователь может предпринять, чтобы что-то нарисовать. – programmar
@programmar: Я сформулирую это снова наиболее решительно, потому что это правда: вы не хотите сериализовать Canvas, независимо от чего-либо, вы не хотите сериализовать его. Многое будет зависеть от того, как вы делаете свои рисунки, чего мы еще не знаем, но вы все еще можете извлечь png-изображение из нарисованного изображения и сохранить его, или если вы хотите иметь рисунок с отменой функциональности, тогда вы можете хотите сохранить коллекции изображений или точек. –
@programmar: Из любопытства - почему вы используете класс AWT GUI, Canvas? Почему не компонент Swing, такой как JPanel или компонент JavaFX? –