createImageSync method
Creates a synchronous image from this display object.
adjustOffset determines whether to adjust the offset of the generated
image to the top-left corner of the display object's bounds.
If true, the generated image will have its origin at (0, 0) and
its size will be equal to the bounds of the display object.
Defaults to true.
resolution determines the resolution of the generated image.
Defaults to 1.
rect determines the bounds of the image to generate.
Defaults to null, which means that the method will use the filter
bounds of the display object.
Returns a ui.Image instance.
Implementation
ui.Image createImageSync([
bool adjustOffset = true,
double resolution = 1,
GRect? rect,
]) {
rect ??= getFilterBounds();
rect = rect!.clone();
if (resolution != 1) {
rect *= resolution;
}
final needsAdjust =
(rect.left != 0 || rect.top != 0) && adjustOffset || resolution != 1;
late ui.Picture picture;
if (needsAdjust) {
picture = createPicture((canvas) {
if (adjustOffset) canvas.translate(-rect!.left, -rect.top);
if (resolution != 1) canvas.scale(resolution);
}, (canvas) {
if (adjustOffset) canvas.restore();
if (resolution != 1) canvas.restore();
});
} else {
picture = createPicture();
}
final width = adjustOffset ? rect.width.toInt() : rect.right.toInt();
final height = adjustOffset ? rect.height.toInt() : rect.bottom.toInt();
final output = picture.toImageSync(width, height);
picture.dispose();
return output;
}