2012-05-15 12 views
5

Mam Path, która zwykle ma grubość skoku wynoszącą 1. W pewnych okolicznościach musi mieć grubość obrysu równą 10. Kiedy zwiększam grubość obrysu, nie chcę ścieżki do weź dodatkowe miejsce.Zwiększyć grubość obrysu, ale zachować wymiary ścieżki

Domyślnie, tylko zwiększenie grubości obrysu zwiększa renderowany rozmiar ścieżki. Więc masz coś takiego (niebieski kontur wykracza poza czarnym granicy):

Stroke expands beyond original boundary of path

To co staram się osiągnąć (niebieski zarys pozostaje w czarnym granicy):

Stroke is entirely inside original boundary of path

mogę myśleć o dwóch matematycznych sposobów, aby zrekompensować zwiększonym StrokeWidth:

  1. Ręcznie adjus t punkty trójkąta do wewnątrz.
  2. Użyj opcji ScaleTransform w Geometrii ścieżki.

Oba byłyby nieco problematyczne/złożone. Czy istnieje prostszy sposób?

Odpowiedz

18

Można przypiąć ścieżkę własnej geometrii tak:

<Path ... Clip="{Binding Data, RelativeSource={RelativeSource Self}}"/> 

ale wtedy musiałby podwoić StrokeThickness, ponieważ tylko połowa skoku jest widoczny.

+2

+1, bardzo sprytny! – devuxer

+0

Dzięki Clemens, co jeśli potrzebuję czegoś przeciwnego? zachować jedynie zewnętrzny obrys, czy istnieje sposób na wyłączenie własnej geometrii? – superware

+0

Zobacz https://stackoverflow.com/questions/48563157/clip-inverted-own-geometry – superware

0

Na kaprysu ustawić StrokeThickness = -1 na moim Prostokąt i zrobił dokładnie to, co chciałem go: skok idzie na wewnątrz prostokąta, a nie na zewnątrz.

+2

Aby rozwiązać konkretny przypadek PO, powinien on wynosić od -1 do -10? –

Powiązane problemy