WPF - Path / Geometry help - Странная форма - PullRequest
5 голосов
/ 22 декабря 2009

Кто-нибудь знает хороший способ создать этот объект из Xaml? Он также должен работать при непрозрачности .5, когда накладывается поверх других элементов управления.

Размеры также должны быть изменены с помощью горизонтального или вертикального выравнивания.

Форма http://monitor.utopiaselfscan.com/test.bmp

У меня возникли некоторые трудности. Самое близкое, что я получаю, это 2 границы, одна из которых имеет отрицательное поле, но она не работает, когда применяется Opacity.

Код, который работает:

            <Path Fill="Black">
                <Path.Data>
                    <CombinedGeometry GeometryCombineMode="Exclude">
                        <CombinedGeometry.Geometry1>
                            <RectangleGeometry RadiusX="5" RadiusY="5" Rect="0,0,200,100" />
                        </CombinedGeometry.Geometry1>
                        <CombinedGeometry.Geometry2>
                            <RectangleGeometry RadiusX="5" RadiusY="5" Rect="105,5,90,90" />
                        </CombinedGeometry.Geometry2>
                    </CombinedGeometry>
                </Path.Data>
            </Path>

1 Ответ

6 голосов
/ 23 декабря 2009

Используйте GeometryGroup с EvenOdd FillRule или CombinedGeometry с GeometryCombineMode из Xor или Exclude. Обе геометрии для объединения будут объектами RectangleGeometry с соответствующими RadiusX и RadiusY. Результатом будет внешний прямоугольник с "отверстием" в нем, где был расположен внутренний прямоугольник. (Я полагаю, что это то, что вы хотите, а не белый прямоугольник внутри черного.)

Затем вы можете назначить эту составную геометрию для Path в качестве ее свойства Data и установить Fill и Opacity, как требуется.

...