Как получить изображение с холста, нарисованного с помощью CustomPainter? - PullRequest
0 голосов
/ 17 мая 2019

В моем приложении Flutter я использую CustomPainter , чтобы позволить пользователю нарисовать свою подпись на экране.Мне нужно найти способ сохранить это как изображение.

PictureRecorder прекрасно работает, когда вы можете передать объект PictureRecorder на холст согласно предыдущим ответам StackOverflow:

final recorder = new PictureRecorder();
Canvas(recorder).drawSomething;
final picture = recorder.endRecording();

Однако при использовании CustomPainter холст является аргументом функции Paint().

class myPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    drawToCanvas(canvas);

  @override
  bool shouldRepaint(CustomPainter old) {
    return false; 
}

Итак, в итоге:

Как я могу создать изображение из CustomPainter?
Если ответ заключается в использовании PictureRecorder, как я могу передать рекордер на холст?

1 Ответ

0 голосов
/ 11 июня 2019

Вам не нужно передавать PictureRecorder на холст в методе CustomPainter paint. Вместо этого вы можете вызывать рисование непосредственно с другого холста, на котором есть диктофон. Например:

Future<Image> getImage() async {
final PictureRecorder recorder = PictureRecorder();
myPainter.paint(Canvas(recorder), mySize);
final Picture picture = recorder.endRecording();

return await picture.toImage(width, height);
}

...