WPF PathGeometry Fill

1

У меня проблема с 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;
}

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

Изображение 174551

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

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

  • 0
    Вы должны включить код, иначе трудно дать ответ, основанный на чисто догадках. Rgds,
  • 0
    Извините, впервые публикуется здесь. Я обычно просто читаю вопросы.
Показать ещё 2 комментария
Теги:

1 ответ

0

Вы описываете несколько фигур, все они просто однолинейные, потому что вы продолжаете выдавать команды M ove. Если данные вашего пути были такими:

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

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

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

  • 0
    Дэмиен, спасибо за совет. К сожалению, проблема в том, что это не то, что я создал сам. Я беру координаты из CSV-файла и по существу рисую линии и дуги на основе этого. Я думаю, что мне действительно хотелось бы знать, есть ли способ сгенерировать данные о вашем пути из моего и закрыть эти дыры.
  • 0
    @ MADC0D3R - зависит от того, насколько «чист» / «безопасен» ввод - если за вводом нет вредоносности, и они стремятся к единственной замкнутой фигуре, то вы анализируете каждую строку как пары «start x, y», » конец х, у "в каком-то словаре. Затем вы берете один элемент из словаря, испускаете M и «start x, y», а затем L и «end x, y» - затем вы зацикливаетесь и находите следующую строку, «start x, y» которой соответствует предыдущему »end х, у "и просто испустить эту строку" конец х, у ". Продолжайте, пока не вернетесь к исходной точке начала x, y.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню