2009-07-27 70 views
12

私は、キャンバス上のポイントに双方向バインドしたいデータポイントをたくさん持っています。左下にキャンバスのx、y原点を変更し、y座標を反転させる方法は?

ポイントは、ほとんどの数学グラフのように、大きなy値が上方向に反映されていると仮定します。

キャンバスのx、y原点を左下に変更し、y座標の解釈を逆にするにはどうすればよいですか?

(私はXAMLに滞在したいと思います)

+0

こんにちは私はこれが古いと知っていますが、それは双方向で作業していますか?私はそれをクリックしてポイントを選択しようとしています –

答えて

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

ありがとう、ScaleX、CentreX、CenterYは冗長ではありませんか? ちょうどScaleY = " - 1"を使っているようです。 また、他の人は、テキストが上下逆さまになることに注意してください。 –

+3

はい他のプロパティは重複していますが、それらのプロパティを含めるのは規約(私が見たもの)です。そして、はい、それはテキストを反転されますが、あなたがちょうどポイントを描画している場合は、大丈夫でなければなりません。テキストを描画する必要がある場合は、グラフの上にある2番目の透明キャンバスに描画することができます。Canvas – kenwarner

+0

@qntmfred、テキスト実装のサンプル実装です。ポイントシステムがテキストの配置にも影響するため – RobinAtTech

0

あなたはデータバインディングを使用している場合は、TypeConvertorを使用することができますが、そのためにあなたは、XAMLの外に行かなければならない、あなたが事前にキャンバスのサイズを知っておく必要があります。

+0

こんにちは、データバインディングはどういう意味ですか?私はそれらをクリックしてポイントを選択しようとしています。 TypeConverterはこれと何か関係がありますか? –

0

私はおそらくキャンバスを使用するのではなく、カスタムパネルを作成し、それをあなたのニーズに合わせて意味をなす添付プロパティを与えると思います。ここではカスタムパネルを実装する例である:あなたが対策に多くを行うと上書きを配置する必要はありませんので、キャンバスのような

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

何かが非常に簡単です。

Canvasから継承し、ArrangeOverrideをオーバーライドすることもできますが、試したことはありませんが、動作する可能性があります。

+0

Bill、Canvasを使って何が問題なのかを教えてください。 –

+0

まあまっすぐなキャンバスでこれをどうやって行うことができないのでしょうか?Yを-1にすると、すべてが反転します。私はあなたも同様に要素のすべてを拡大することができたと思います-1。 –

0

私はScaleTransformメソッドを広範囲に試しました。それはうまくいきません。それは、2つの座標のうちの1つだけをシフトし、両方をシフトしません。しかし、これは広告として動作します:

<Canvas Name="myCanvas" Width="0" Height="0" RenderTransform="1 0 0 -1 0 0" 
    HorizontalAlignment="Center" VerticalAlignment="Center" > 
関連する問題