#.net #silverlight #geometry #clipping #clip
#.net #silverlight #геометрия #отсечение #клип
Вопрос:
UIElement.Clip
Свойство принимает Geometry
объект и использует его для отсечения внешней части UIElement
. Я хотел бы выполнить геометрическую инверсию и вместо этого пробить отверстие в элементе.
Кто-нибудь знает, как это сделать?
Я полагаю, что создание инвертированной версии геометрии клипа будет работать, но я не могу найти способ сделать это.
РЕДАКТИРОВАТЬ Кажется, что WPF имеет Geometry.Combine
который можно использовать для вычитания одной геометрии из другой, хотя это недоступно в Silverlight. Если бы это было так, я мог бы вычесть геометрию клипа из прямоугольника ограничивающего прямоугольника элемента и использовать его для обрезки.
Ответ №1:
Один из подходов в Silverlight заключается в использовании GeometryGroup
и включении в группу очень большого прямоугольника, начинающегося с удаленной отрицательной позиции.
Например, следующий синий квадрат имеет меньшее квадратное отверстие:-
<Rectangle Fill="Blue" HorizontalAlignment="Center" VerticalAlignment="Center" Height="200" Width="200">
<Rectangle.Clip>
<GeometryGroup>
<RectangleGeometry Rect="-2048 -2048 4096 4096" />
<RectangleGeometry Rect="100 100 50 50" />
</GeometryGroup>
</Rectangle.Clip>
</Rectangle>