2011-10-09 17 views
13

Właściwość UIElement.Clip pobiera obiekt Geometry i używa go do przycięcia zewnętrznej części UIElement. Chciałbym wykonać odwrotność geometryczną i zamiast tego przebić dziurę w elemencie.Jak odwrócić geometrię obcinania w Silverlight/WPF?

Ktoś wie, jak to zrobić?

Wyobrażam sobie, że tworzenie odwróconej wersji geometrii klipu zadziała, ale nie mogę znaleźć sposobu, aby to zrobić.


EDIT Wydaje się, że WPF ma Geometry.Combine który może być używany do odjąć jedną geometrię od siebie, choć nie jest to możliwe w Silverlight. Gdyby tak było, mógłbym odjąć geometrię klipu od prostokąta obwiedni prostokąta elementu i użyć go do przycięcia.

Odpowiedz

14

Jednym z podejść w Silverlight jest użycie GeometryGroup i włączenie do grupy bardzo dużego prostokąta zaczynającego się w odległej pozycji ujemnej.

przykładowo następujące Konferencja ma mniejszy otwór kwadratowego: -

<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>