У меня есть динамический список строк длиной «n», и мне нужно нарисовать круг, разделенный на «n» количество равных частей, и распределить имя по частям.
Я нашел этот фрагмент кода Xamlкоторый генерирует 3 части, но я не могу понять, как это сделать программно
<Image Width="500" Height="500" Name="image1">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Red">
<GeometryDrawing.Pen>
<Pen Brush="Black" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<LineSegment Point="100,0"/>
<ArcSegment Point="186.6,150" SweepDirection="Clockwise" Size="100,100"/>
<LineSegment Point="100,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Blue">
<GeometryDrawing.Pen>
<Pen Brush="Black"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<LineSegment Point="186.6,150"/>
<ArcSegment Point="13.4,150" SweepDirection="Clockwise" Size="100,100"/>
<LineSegment Point="100,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="Green">
<GeometryDrawing.Pen>
<Pen Brush="Black"/>
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<PathGeometry>
<PathFigure StartPoint="100,100">
<PathFigure.Segments>
<LineSegment Point="13.4,150"/>
<ArcSegment Point="100,0" SweepDirection="Clockwise" Size="100,100"/>
<LineSegment Point="100,100"/>
</PathFigure.Segments>
</PathFigure>
</PathGeometry>
</GeometryDrawing.Geometry>
</GeometryDrawing>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
Это даже хороший способ?если нет, то какой лучший способ создать то, что мне нужно?
Что меня действительно смущает, так это способ вычисления значения ArcSegment?
DrawingGroup drawingGroup = new DrawingGroup();
var lastPoint = new Point(100, 0);
for (int i = 0; i < 3; i++)
{
GeometryDrawing drawing = new GeometryDrawing();
drawing.Brush = (Brush)new BrushConverter().ConvertFrom("#FF0000"); // TODO: change color
drawing.Pen = new Pen
{
Brush = (Brush)new BrushConverter().ConvertFrom("#000000")
};
PathSegment lineSegment1 = new LineSegment(lastPoint, true);
lastPoint = new Point(200, 100); // TODO: calculate
PathSegment arcSegment = new ArcSegment(lastPoint, new Size(100, 100), 0, false, SweepDirection.Clockwise, true);
PathSegment lineSegment2 = new LineSegment(new Point(100, 100), true);
PathFigure figure = new PathFigure(new Point(100, 100), new PathSegment[] { lineSegment1, arcSegment, lineSegment2 }, false);
drawing.Geometry = new PathGeometry(new PathFigure[] { figure });
drawingGroup.Children.Add(drawing);
}
Заранее спасибо.