Pergunta

Eu estou tentando fazer algum aplicativo de desenho e eu recebo resultados estranhos no meu "modo de selecção". Se eu desenhar um retângulo e "selecioná-lo" RenderSize retorna adequado tamanho para isso, mas se a linha é selecionada RenderSize retornos tamanho que tem definir a largura como Line.X2, e definir a altura como Line.Y2. Por exemplo: linha começa em X1 = 50, Y 1 = 50, extremidades em X2 = 130, Y2 = 90, RenderSize retorna Tamanho com largura = 130 altura = e 90. Meu selecção contém elementos do tipo UIElement por isso não sabem ( e realmente não deve se preocupar) que forma é selecionada, a fim de fazer o meu modo de seleção tão genérico como eu posso e eu gostaria de chamar a caixa delimitadora enquanto se move de usuário selecionado forma.

experimentou o Google o problema, mas não encontrou nada relevante, então talvez você poderia me ajudar com isso. Será que é porque retângulo tem um conjunto posição, lona, ??enquanto Linha tem seus pontos definir explicitamente?

Foi útil?

Solução

A razão que você está recebendo 130x90 é por causa da razão que você citou. Um retângulo em WPF é a posição-menos, é apenas uma altura / largura para os dois valores de tamanho são iguais.

No entanto, uma linha, definidas pelos pontos define necessariamente uma necessária compensação da origem, e, assim, o deslocamento é incluído na caixa delimitadora.

Além disso, note que você pode continuar a usar as propriedades Canvas.Top/Left com o seu objeto de linha para mais compensá-la, por exemplo:.

  <Canvas>
    <Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
  </Canvas>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top