【发布时间】:2010-11-14 05:32:23
【问题描述】:
我有一堆数据点想要双向绑定到画布上的点。
这些点假定较大的 y 值反映在向上的方向,就像大多数数学图一样。
如何将画布的 x,y 原点更改为左下角并反转它对 y 坐标的解释?
(我想留在 XAML)
【问题讨论】:
-
嗨,我知道这是旧的,但你有没有让它双向工作?我正在尝试通过单击来选择点
标签: wpf silverlight xaml graphics drawing
我有一堆数据点想要双向绑定到画布上的点。
这些点假定较大的 y 值反映在向上的方向,就像大多数数学图一样。
如何将画布的 x,y 原点更改为左下角并反转它对 y 坐标的解释?
(我想留在 XAML)
【问题讨论】:
标签: wpf silverlight xaml graphics drawing
<Canvas>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" />
</Canvas.LayoutTransform>
</Canvas>
【讨论】:
我广泛尝试了 ScaleTransform 方法:它不起作用。它只移动 2 个坐标之一,从不移动两者。然而,这就像宣传的那样工作:
<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0"
HorizontalAlignment="Center" VerticalAlignment="Center" >
【讨论】:
如果您使用数据绑定,您可以使用TypeConvertor,但为此您必须在 XAML 之外,并且您需要事先知道画布的大小。
【讨论】:
我可能会创建一个自定义面板而不是使用 Canvas,并为其提供对您的需求有意义的附加属性。下面是一个实现自定义面板的示例:
http://blog.boschin.it/articles/silverlight-radialpanel.aspx
像 Canvas 这样的东西非常简单,因为您不必在度量中做太多事情并安排覆盖。
您也可以从 Canvas 继承并覆盖 ArrangeOverride,我没有尝试过,但它可能有效。
【讨论】: