C # Drawing: Как лучше всего нарисовать многоугольник с отверстием посередине - PullRequest
4 голосов
/ 11 июня 2011

У меня есть форма, которая определяется внешней границей, а затем внутренней границей. Если нет внутренней границы, форма сплошная. Если есть внутренняя граница, я хочу, чтобы полигон / путь определялся только между двумя границами; Я не хочу рисовать снаружи, а затем нарисовать внутри цвет фона.

Например, если у меня есть квадрат, определенный следующими координатами для внешней границы:

{0,0}, {20, 0}, {20,20}, {0, 20}

Тогда этот квадрат размером 20х20 с левым нижним правым углом в начале координат. Эта фигура имеет треугольник, вырезанный из центра:

{10,10}, {15,10}, {15,15}

Как я могу создать путь, содержащий эту форму, используя либо WPF, либо GDI +? *

Ответы [ 3 ]

6 голосов
/ 11 июня 2011

Вы можете нарисовать эту форму с помощью XAML: (Ключ должен использовать CombinedGeometry с GeometryCombineMode="Exclude")

<Path Fill="Black">
    <Path.Data>
        <CombinedGeometry GeometryCombineMode="Exclude">
            <CombinedGeometry.Geometry1>
                <RectangleGeometry Rect="0,0,20,20"/>
            </CombinedGeometry.Geometry1>
            <CombinedGeometry.Geometry2>
                <PathGeometry>
                    <PathFigure StartPoint="10,10">
                        <LineSegment Point="15,10"/>
                        <LineSegment Point="15,15"/>
                    </PathFigure>
                </PathGeometry>
            </CombinedGeometry.Geometry2>
        </CombinedGeometry>
    </Path.Data>
</Path>
3 голосов
/ 12 июня 2011

В GDI + вы можете использовать FillPath() или DrawPath() с FillModeAlternate.

Вот пример, довольно близкий к тому, что вы просите здесь .

0 голосов
/ 11 июня 2011

Просто нарисуйте отверстия в верхней части основного контура, используя цвет фона.Это будет выглядеть так, как если бы они были настоящими дырами edit используйте этот подход, если используемый API-интерфейс не поддерживает дыры.Вот почему я предполагаю, что вы спрашиваете

...