我正在尝试为另一条路径充当OpacityMask
的路径,以便只绘制轮廓。我有两条正确重叠的路径,但是当我从GeometryDrawing
创建一个PathGeometry
时,会产生一些我无法理解的奇怪结果。
为了让你知道我在说什么,下面的图片是两条路径,一条橙色和一条黑色,重叠产生橙色路径的效果,黑色轮廓:
我正在寻找的是将橙色路径(顶部路径)设置为黑色路径的OpacityMask
以创建透明度。当我尝试创建GeometryDrawing
以与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: 我已经将问题缩小到无法从另一个元素中分割出形状。根据我对不透明蒙版的理解,我认为为系统提供黑白颜色可以掩盖图像或控制的某些区域,但不幸的是我得到的是反过来:所有不透明的东西都会被掩盖< EM>在