WPF PathGeometry Fill

У меня проблема с WPF и PathGeometry. У меня есть следующий объект Path, который представляет собой комбинацию линий и дуг.

<Path Data="M100,180L220,180 M220,180L220,152 M220,152L217,150
M217,150L182,150 M180,147L180,132 M182,130L217,130 M217,130L220,127
M220,127L220,80 M220,80L100,80 M100,80L100,180 M182,150L180,147
M180,132L182,130">

Вот простой фрагмент кода, который должен нарисовать всю форму.

private void DrawIt()
{
    Canvas canv = new Canvas();
    this.Content = canv;
    canv.Margin = new Thickness(0, 0, 0, 0);
    canv.Background = new SolidColorBrush(Colors.White);

    Path testPath = GetPath("blue");
    testPath.Data = Geometry.Parse("M100,180L220,180 M220,180L220,152 M220,152L217,150 M217,150L182,150 M180,147L180,132 M182,130L217,130 M217,130L220,127 M220,127L220,80 M220,80L100,80 M100,80L100,180 M182,150L180,147 M180,132L182,130 ");
    var area = testPath.Data.GetArea();

    canv.Children.Add(testPath);
    this.Content = canv;
}

private Path GetPath(string aColor)
{
    Path imagePath = new Path();
    SolidColorBrush colorBrush = (SolidColorBrush)new BrushConverter().ConvertFromString(aColor);
    imagePath.Stroke = colorBrush;
    imagePath.StrokeThickness = 2;
    imagePath.Fill = colorBrush;

    return imagePath;
}

Код выше приводит к следующему изображению:

Результирующее изображение

Моя проблема в том, что я пытаюсь получить область этого изображения, но Path.Data.GetArea() только когда-либо возвращает 0.0.

Любая помощь будет оценена.

1 ответ

Вы описываете несколько цифр, все из них только прямые линии, потому что вы продолжаете выдавать MОве команды Если ваши данные пути были такими:

M100,180L220,180 220,152 217,150 182,150 180,147 180,132 182,130 217,130 220,127
         220,80 100,80 Z

Вместо этого он описывает одну фигуру, которая должна рисовать ту же форму, которую вы показали, но также должна быть заполняемой.

См. Синтаксис разметки пути

Другие вопросы по тегам