Pregunta

Estoy tratando de hacer alguna aplicación de dibujo y obtengo resultados extraños en mi " modo de selección " ;. Si dibujo un rectángulo y " lo selecciono " RenderSize devuelve el tamaño adecuado para él, pero si se selecciona Línea, RenderSize devuelve el tamaño que tiene el ancho establecido como Line.X2 y la altura establecida como Line.Y2. Por ejemplo: la línea comienza en X1 = 50, Y1 = 50, termina en X2 = 130, Y2 = 90, RenderSize devuelve Tamaño con Ancho = 130 y Altura = 90. Mi selección contiene elementos de tipo UIElement, así que no sé ( y realmente no debería importarme) qué forma se selecciona para que mi modo de selección sea lo más genérico posible y me gustaría dibujar un cuadro delimitador mientras el usuario mueve la forma seleccionada.

Intenté con google el problema pero no encontré nada relevante, así que tal vez podrías ayudarme con él. ¿Es porque Rectángulo tiene una posición establecida por Canvas mientras que Line tiene sus puntos establecidos explícitamente?

¿Fue útil?

Solución

La razón por la que obtiene 130x90 es por la razón que citó. Un rectángulo en WPF no tiene posición, es solo una altura / ancho, por lo que los dos valores de tamaño son iguales.

Sin embargo, una Línea definida por puntos necesariamente define un desplazamiento requerido desde el origen, y por lo tanto el desplazamiento se incluye en el cuadro delimitador.

También tenga en cuenta que puede seguir utilizando las propiedades Canvas.Top/Left con su objeto Line para compensarlo aún más, por ejemplo:

  <Canvas>
    <Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
  </Canvas>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top