Как GraphicsPath.Flatten () влияет на производительность рисования? - PullRequest
3 голосов
/ 04 марта 2011

Боюсь, что у меня ошибка в Winforms / GDI +. Я строю графический путь, состоящий из линии, а затем кривой. При некоторых уровнях масштабирования (применяя матрицу преобразования к графическому объекту) путь рисуется неправильно, см. Рисунок:

enter image description here

Проводя некоторое тестирование, я заметил, что если я применю Flatten() к графическому пути, проблема исчезнет. Кажется, что кривые преобразуются в соединенные сегменты, и проблема исчезает (это код):

result.AddLine(sourcex, sourcey, sourcex, sourcey + sourceOffset);
result.AddArc(ellipseContainer, startAngle, sweepAngle);
result.Flatten(); // this line solves the issue!!

Я отладил приложение, и число точек в графическом контуре равно 9 без применения Flatten(), а 53 - Flatten().

Мой вопрос Что вы думаете о производительности рисования с применением Flatten () к graphicsPaths? Как вы думаете, на это может повлиять это изменение?

Заранее спасибо.

1 Ответ

2 голосов
/ 04 марта 2011

Если вы хотите, чтобы линия была соединена, вы должны нарисовать ее как ломаную линию, используя AddLines

...