2011-05-15 9 views
5

私はここでキャンバスの意図された用途の外に出掛けていることを理解しており、より手作業の解決策を考え出す必要があります。しかし、WPFで過度に経験されていない私はCanvasコントロールとそれを無料で提供する機能を使用し続けることができるいくつかのソリューションがあることを期待していました。特定の子コントロールのサイズを変更せずにキャンバスにズームする

この問題は、画像を拡大または縮小するキャンバスと、キャンバスに属するいくつかの子コントロールの周りを中心に展開されています。これらの子コントロールはイメージ上のさまざまな位置に配置されるため、キャンバスはズームインまたはズームアウト時にすべてのレイアウト/配置を処理するという点でうまく機能します。

しかし、欠点の1つは、キャンバスが画像を拡大するときにこれらの子コントロールを拡大して、実際に使用するには大きすぎることが原因であるという欠点があります。私が探しているのは、子コントロールのサイズを拡大することなくキャンバスに属する画像をズームすることができ、好ましくはレイアウトを処理するソリューションです。

ズームファクタが増減するにつれて、これらの子コントロールの幅と高さを変更しようとしましたが、わずかな遅延時間があり、すべてが「ジャーキー」に見えます。

私はズーム/パン/レイアウトのすべてを自分でやっていますが、最初にキャンバスに伝えることができる何かが欠けていないことを確認するように頼んだと思いました特定のコントロールのサイズを変更しないでください。前もって感謝します。

答えて

2

子のRenderTransformをキャンバスの変換の逆にバインドできます。私の答えはthis similar question on rotationです。

+0

ここに答えてくれてありがとう、ちょうど私が必要なもののように見えます。 –

2

これは答えではありませんが、キャンバス自体とは逆のスケールを適用したくない要素に対してトランスフォームを設定するとどうなりますか?たとえば、キャンバスに2.0のスケール変換があった場合は、0.5のスケール変換を持つように要素を設定します。おそらく、値変換器を使用して変換値を結合することによって、これを達成できます。

おそらく、要素のレンダリング変換の起点が0.5,0.5であることを確認して、中心からの尺度になるようにします。

+0

いい思いついた!それはうまくいくだろうと思う、私は本当にそれを試してみるだろうが、私はそれが動作しません想像することはできません。もう一度お返事ありがとうございます。私のためのコードではありません。 –

関連する問題