Ala*_*ich 6 wpf geometry pathgeometry
我有一个PathGeometry定义一个像这样的路径:
原始路径http://devblog.ailon.org/devblog/_stuff/wpfpathgeoquestion/original.gif
这是一个简化的例子.实际上它可以有任何类型的段(线,弧,贝塞尔).
现在我需要在段关节点中切出某种类型的孔(正方形,圆形等),以便最终结果如下所示:
带孔http://devblog.ailon.org/devblog/_stuff/wpfpathgeoquestion/with_holes.gif
我最初的想法是使用GeometryCombineMode.Exclude将原始PathGeometry与其他包含正方形(或其他)的几何图形组合在一起.不幸的是,如果未填充路径,则会生成空几何.如果填充它会产生不正确的结果.
所以我被卡住了.在带有线段的简单示例中,我可以预先计算边界点并使我的线段在那里结束,但是对于弧和贝塞尔曲线,这将有点过分.
有谁知道如何实现这一目标?
注意:我需要擦除这些孔(透明),因此在它上方放置一个白色方块不会.
哦。做到了。这个想法是使用 DrawingBrush 从孔中创建一个 OpacityMask,然后在绘制 PathGeometry 之前将其推到绘图上下文上。像这样的东西。
RectangleGeometry r = new RectangleGeometry(graphVisual.Bounds);
GeometryDrawing dr = new GeometryDrawing(Brushes.Black, null, Geometry.Combine(r, bulletHoles, GeometryCombineMode.Exclude, null));
DrawingBrush br = new DrawingBrush(dr);
drawingContext.PushOpacityMask(br);
drawingContext.DrawGeometry(null, new Pen(Brushes.Green, 2), graphVisual);
drawingContext.Pop();
Run Code Online (Sandbox Code Playgroud)