0

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

尝试用谷歌搜索问题,但没有发现任何相关内容,所以也许你可以帮助我。是因为 Rectangle 的位置由 Canvas 设置,而 Line 的点显式设置?

4

1 回答 1

3

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

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

另请注意,您可以继续将 Canvas.Top/Left 属性与 Line 对象一起使用以进一步偏移它,例如:

  <Canvas>
    <Line X1="50" X2="130" Y1="50" Y2="90" StrokeThickness="1" Stroke="Blue" Canvas.Top="50" Canvas.Left="30"></Line>
  </Canvas>
于 2009-06-22T17:36:47.520 回答