0

FrameworkElement我有以下方法的后代:

class HexVisual : FrameworkElement {

    /* ... */

    private PathGeometry GetHexGeometry(Hexagon Hexagon) {
        var geometry = default(PathGeometry);
        if(mHexGeometries.TryGetValue(Hexagon, out geometry)){
            return geometry;
        }

        PathFigure figure = new PathFigure();

        int i = 0;
        foreach (Point point in Hexagon.Polygon.Points) {
            if (i == 0) {
                figure.StartPoint = point;
                i++;
                continue;
            }

            figure.Segments.Add(new LineSegment(point, true));
        }

        geometry = new PathGeometry();
        geometry.Figures.Add(figure);
        geometry.FillRule = FillRule.Nonzero;

        return geometry;

    }

    private DrawingVisual CreateHexVisual() {
        DrawingVisual visual = new DrawingVisual();
        using (DrawingContext context = visual.RenderOpen()) {
            context.DrawGeometry(BorderBrush, BorderPen, mHexGeometry);
        }

        return visual;

    }
}

当我将此视觉效果添加到 中时Canvas,我得到的是一个实心六边形,而不仅仅是描边(边框)。我在这里做错了什么导致几何图形填充?

4

1 回答 1

1

不确定我是否真的理解您的问题,因为您不能“将视觉效果添加到画布”,但也许您只是设置BorderBrushnullorTransparent或替换

context.DrawGeometry(BorderBrush, BorderPen, mHexGeometry);

context.DrawGeometry(null, BorderPen, mHexGeometry);
于 2014-06-04T20:20:39.923 回答