2012-05-15 10 views
5

Ho un Path che normalmente ha una StrokeThickness di 1. In determinate circostanze, è necessario avere una StrokeThickness di 10. Quando aumento lo spessore del tratto, non voglio il percorso a prendere qualsiasi spazio aggiuntivo.Aumenta corsaTensibilità mantenendo le dimensioni del percorso

Per impostazione predefinita, l'aumento di StrokeThickness aumenta le dimensioni del rendering del percorso. Così si ottiene qualcosa di simile (il contorno blu si estende oltre il confine nero):

Stroke expands beyond original boundary of path

questo è quello che sto cercando di realizzare (il contorno blu rimane entro i confini nero):

Stroke is entirely inside original boundary of path

mi vengono in mente due modi matematici per compensare l'aumento StrokeWidth:

  1. adjus manualmente t i punti del triangolo verso l'interno.
  2. Utilizzare un ScaleTransform sulla geometria del percorso.

Entrambe queste sarebbero alquanto problematiche/complesse. C'è un modo più semplice?

risposta

18

Si potrebbe agganciare il percorso dalla propria geometria in questo modo:

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

ma allora si avrebbe bisogno di raddoppiare la StrokeThickness, dal momento che solo la metà della corsa è visibile.

+2

+1, molto intelligente! – devuxer

+0

Grazie Clemens, cosa succede se ho bisogno di un opposto? per mantenere solo il tratto esterno, c'è un modo per escludere l'auto-geometria? – superware

+0

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

0

Per un capriccio ho impostato StrokeThickness = -1 sul mio rettangolo ed ha fatto esattamente quello che volevo a: la corsa va sul all'interno del rettangolo, piuttosto che sulla parte esterna.

+2

Quindi, per risolvere il caso specifico dell'OP, dovrebbe essere variato tra -1 e -10? –

Problemi correlati