使用带有PathGeometry的DrawingBrush作为OpacityMask不能按预期工作

时间:2013-09-09 18:13:52

标签: wpf pathgeometry opacitymask

我正在尝试为另一条路径充当OpacityMask的路径,以便只绘制轮廓。我有两条正确重叠的路径,但是当我从GeometryDrawing创建一个PathGeometry时,会产生一些我无法理解的奇怪结果。

为了让你知道我在说什么,下面的图片是两条路径,一条橙色和一条黑色,重叠产生橙色路径的效果,黑色轮廓:

http://i.imgur.com/t0k3KvE.png

我正在寻找的是将橙色路径(顶部路径)设置为黑色路径的OpacityMask以创建透明度。当我尝试创建GeometryDrawing以与DrawingBrush一起使用时,我会产生一种奇怪的效果:

http://i.imgur.com/wShmWxF.png

正如您所看到的,它不是挖出黑色路径的内部,而是在其外部创建一个遮罩,并扭曲路径上的实际数据点。

以下是绘制第一张图片的代码:

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>在

0 个答案:

没有答案