手書きを実現させるのにSignatureはとても便利です。本当に感謝!
しかしtoImage()メソッドで画像に変換すると見た目と位置が変わってしまいます。
SignatureController contoller = SignatureController();
var image = controller.toImage();
サイズを指定しても一緒です。
var image = controller.toImage(width: 300, height: 300);
原因はtoImage()が手書き部分の最小矩形で画像化するからだそうです。サイズを指定しても手書きを画像化してから指定のサイズの画像に入れ込むという作業らしいので、上手くいかないらしいです。
なので以下のように筆圧0の点を4隅に作ってtoImage()をすると見た目通りの画像になりました。
double width = 300;
double height = 300;
controller.addPoint(Point(const Offset(0, 0), PointType.tap, 0));
controller.addPoint(Point(Offset(0, height), PointType.tap, 0));
controller.addPoint(Point(Offset(width, 0), PointType.tap, 0));
controller.addPoint(Point(Offset(width, height), PointType.tap, 0));
var image = controller.toImage();
このやり方が良いのか悪いのか分かりませんが、出来た画像が見た目通りなので問題ないと思っています。
コメントを残す