我正在尝试制作一些绘图应用程序,并且在我的“选择模式”中我得到了奇怪的结果。如果我画一个矩形并“选择它” RenderSize为其返回适当的大小,但如果选择了Line,则RenderSize返回Size,其宽度设置为Line.X2,Height设置为Line.Y2。例如:行从X1 = 50开始,Y1 = 50,结束于X2 = 130,Y2 = 90,RenderSize返回Size,Width = 130,Height = 90.我的选择包含UIElement类型的元素,所以我不知道(并且真的不应该关心选择什么形状以使我的选择模式尽可能通用,我想在用户移动选定的形状时绘制边界框。

尝试谷歌问题,但没有发现任何相关,所以也许你可以帮助我。是因为Rectangle的位置是由Canvas设置的,而Line是否明确设置了它的点?

有帮助吗?

解决方案

你获得130x90的原因是因为你引用的原因。 WPF中的矩形是无位置的,它只是一个高度/宽度,因此两个大小值相等。

但是,由点定义的线必须定义与原点的所需偏移量,因此偏移量包含在边界框中。

另请注意,您可以继续将Line对象的Canvas.Top/Left属性用于进一步抵消它,例如:

  <Canvas>
    <Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
  </Canvas>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top