我试图让一条路径充当OpacityMask
另一条路径,以便仅绘制轮廓。我已经得到了两条正确重叠的路径,但是当我从 中创建一个GeometryDrawing
时PathGeometry
,它会产生一些我无法理解的奇怪结果。
为了让您了解我在说什么,下图是两条路径,一条橙色和一条黑色,重叠以产生带有黑色轮廓的橙色路径的效果:
我正在寻找的是使橙色路径(顶部)成为OpacityMask
黑色路径以创建透明度。当我尝试创建一个GeometryDrawing
与 a 一起使用时,DrawingBrush
我得到了一个奇怪的效果:
如您所见,它不是挖掘黑色路径的内部,而是在其外部创建一个遮罩,并扭曲路径上的实际数据点。
这是绘制第一张图像的代码:
path2 = new System.Windows.Shapes.Path();
path2.Data = path1.Data.Clone();
path2.StrokeThickness = path1.StrokeThickness / 1.5;
path1.Stroke = Brushes.Black;
path2.Stroke = Brushes.Orange;
manipulationCanvas.Children.Add(path1);
manipulationCanvas.Children.Add(path2);
现在禁止设置代码并将它们添加到画布,使用以下代码创建第二个图像:
DrawingBrush opacityBrush = new DrawingBrush();
GeometryDrawing gDrawing = new GeometryDrawing(null, new Pen(Brushes.Black, path2.StrokeThickness), path1.Data);
opacityBrush.Drawing = gDrawing;
path1.Stroke = Brushes.Black;
path1.OpacityMask = opacityBrush;
path2.Stroke = Brushes.Orange;
path2.Opacity = 0.5;
谁能告诉我为什么会这样?
更新 1: 我已将问题缩小到无法从另一个元素中雕刻出形状。根据我对不透明蒙版的理解,我的印象是,为系统提供黑白颜色可以让我屏蔽图像或控件的某些区域,但不幸的是,我得到的是相反的:所有不透明的东西都被蒙上了.