Hex PathGeometry заливка вместо рисования только границ
У меня есть потомок 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
Я получаю заполненный шестиугольник, а не только штрих (границу). Что я делаю не так, что вызывает заполнение геометрии?
1 ответ
Решение
Не уверен, что я действительно понимаю ваш вопрос, потому что вы не можете "добавить визуальные эффекты в Canvas", но, возможно, вы просто установили BorderBrush
в null
или же Transparent
или заменить
context.DrawGeometry(BorderBrush, BorderPen, mHexGeometry);
с
context.DrawGeometry(null, BorderPen, mHexGeometry);