问题描述
我正在尝试遮罩我的部分绘图(使用“ image”(ui.image)绘制的pnt)-我必须使用 由于性能原因,paintimage。有用。 然后,我尝试使用ui.image('mask')遮罩图形,该ui.image是由alpha +黑色像素组合而成的png。因此,结果应该是隐藏了蒙版中存在黑色部分的pnts图。 它只是绘制黑色而不是蒙版的透明像素。.没有BlendMode实际起作用。
@override
Future paint(Canvas canvas,Size size) async {
var rect = Rect.fromLTRB(0,w,h);
Paint paint = new Paint();
Size outputSize = rect.size;
if (image != null) {
pnts.forEach((element) async {
canvas.save();
canvas.translate(element.dx,element.dy);
canvas.rotate(getAngle(element));
canvas.translate(-element.dx,-element.dy);
paintimage(canvas: canvas,rect: Rect.fromCenter(center: element,height: 50,width: 50),image: image,);
canvas.restore();
prevPoint = element;
});
if (mask != null) {
//Mask
Size maskInputSize = Size(mask.width.todouble(),mask.height.todouble());
final FittedSizes maskFittedSizes =
applyBoxFit(BoxFit.cover,maskInputSize,outputSize);
final Size maskSourceSize = maskFittedSizes.source;
final Rect maskSourceRect = Alignment.center
.inscribe(maskSourceSize,Offset.zero & maskInputSize);
canvas.saveLayer(rect,paint);
canvas.drawImageRect(mask,maskSourceRect,rect,paint..blendMode = BlendMode.dstATop);
canvas.restore();
}
}
}
结果:
预期结果:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)