如何将画布的x,y原点更改为左下角并翻转y坐标?

时间:2009-07-27 00:12:46

标签: wpf silverlight xaml graphics drawing

我有一堆数据点,我想双向绑定到画布上的点。

这些点假设较大的y值像大多数数学图一样反映在向上的方向上。

如何将画布的x,y原点更改为左下角并反转它对y坐标的解释?

(我想留在XAML)

4 个答案:

答案 0 :(得分:25)

<Canvas>
    <Canvas.LayoutTransform>
        <ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" />
    </Canvas.LayoutTransform>
</Canvas>

答案 1 :(得分:2)

我广泛尝试了ScaleTransform方法:它不起作用。它只移动2个坐标中的一个,而不是两个。然而,这与宣传的一样有效:

<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0"
    HorizontalAlignment="Center" VerticalAlignment="Center" >

答案 2 :(得分:0)

如果你使用数据绑定,你可以使用TypeConvertor,但为此你必须走出XAML,你需要事先了解画布的大小。

答案 3 :(得分:0)

我可能会创建一个自定义面板而不是使用Canvas,并为其提供符合您需求的附加属性。以下是实现自定义面板的示例:

http://blog.boschin.it/articles/silverlight-radialpanel.aspx

像Canvas这样的东西非常简单,因为你不必在测量中做很多事情并安排覆盖。

您也可以从Canvas继承并覆盖ArrangeOverride,我没有尝试过,但它可能有效。