2012-05-15 22 views
5

Tengo un Path que normalmente tiene un grosor de trazo de 1. En determinadas circunstancias, debe tener un grosor de trazo de 10. Cuando aumento el grosor del trazo, no quiero que el trazo tomar cualquier espacio adicional.Aumentar el grosor del trazo, pero mantener las dimensiones de la ruta

De forma predeterminada, simplemente aumentar el grosor de trazo aumenta el tamaño representado de la ruta. Para que pueda obtener algo como esto (el contorno azul se extiende más allá del límite negro):

Stroke expands beyond original boundary of path

Esto es lo que estoy tratando de lograr (el contorno azul se mantiene dentro de los límites negro):

Stroke is entirely inside original boundary of path

puedo pensar en dos formas matemáticas para compensar el aumento de anchoTrazo:

  1. Adjus manualmente t los puntos del triángulo hacia adentro.
  2. Usa una ScaleTransform en la geometría de la ruta.

Ambos serían algo problemáticos/complejos. hay una manera mas facil?

Respuesta

18

Se podría acortar el camino por su propia geometría de la siguiente manera:

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

pero entonces tendría que duplicar el StrokeThickness, ya que sólo la mitad de la carrera es visible.

+2

+1, muy inteligente! – devuxer

+0

Gracias Clemens, ¿qué pasa si necesito enfrente? para mantener solo el trazo externo, ¿hay alguna manera de excluir la geometría del self? – superware

+0

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

0

En un capricho, ajustar StrokeThickness = -1 en mi rectángulo y lo hizo exactamente lo que yo quería que: la carrera va en el interior de del rectángulo en lugar de en el exterior.

+2

Entonces, para resolver el caso específico del OP, ¿debería variar entre -1 y -10? –

Cuestiones relacionadas