【发布时间】:2018-06-25 10:35:51
【问题描述】:
在这里,我将图像列表传递给 ImagePaint 类以将图像裁剪为圆形,图像正在裁剪但仅裁剪图像的一部分,如果我可以减小图像的高度和宽度。然后它会适合圆圈,如果有任何想法请评论。
void paint(Canvas canvas, Size size) {
int c = 0;
canvas.save();
canvas.translate(size.width / 2, size.height / 2);
canvas.rotate(-rotation);
for (var i = 0; i < 16; ++i) {
if (i % 2 == 0) {
canvas.drawLine(
new Offset(0.0, 0.0),
new Offset(0.0, size.width / 2 - 4.2),
tickPaint,
);
} else {
canvas.save();
canvas.translate(-0.0, -((size.width) / 2));
canvas.clipPath(path);
if (images[c] != null) {
ui.Image img = images[c];
canvas.drawImage(img, Offset(0.0, 0.0), new Paint());
}
canvas.rotate(2 * pi);
canvas.restore();
c++;
}
canvas.rotate(2 * pi / 16);
}
canvas.restore();}
此图像以圆形方式打印:
这是我的应用程序,我正在剪切图像并以圆形打印:
【问题讨论】:
-
我还没有在 Flutter 中检查过画布,但你可以尝试使用“ClipOval”在椭圆中剪辑图像吗?
-
为什么要手动绘制而不是直接使用
Image? -
因为我想旋转这个,用我的手指手动旋转,如果有任何其他方式旋转和使用小部件以圆形打印图像,请评论。
-
问题已解决。
ui.Image img = images[c]; final ui.Rect rect = ui.Offset.zero & new Size(200.0, 120.0); final Size imageSize = new Size(330.0, 230.0); FittedSizes sizes = applyBoxFit(boxfit, imageSize, new Size(100.0, 200.0)); final Rect inputSubrect = Alignment.center.inscribe(sizes.source, Offset.zero & imageSize); final Rect outputSubrect = Alignment.center.inscribe(sizes.destination, rect); canvas.drawImageRect(img, inputSubrect, outputSubrect, new Paint());