2011-06-19 4 views
1

私はキャンバスが幅200ピクセル、高さ100ピクセルです。私は次にチェッカーボードタイプの方法で配置された4つの正方形を持っています:C#:Canvasへのパスの追加

-- -- 
| | | 
-- -- 
| | | 
-- -- 

左下の四角のピクセル座標は300,300です。そのキャンバスの視野の外側にあります。私は2つの質問があります:

1)これら4つの四角形をキャンバスに追加する最良の方法は何ですか?これが私のやり方です。

Path p = new Path(); 
p.Fill = Blue; 
p.Data = Square[0]; 

canvas.Children.Add(p); 

2)キャンバスの表示範囲を、子供が実際に描画される場所に「移動」するように変更するにはどうすればよいですか?

私はこれを動作させることはできませんが、私は2種類の作業結果を得ることができます。最初は四角形を描き、本当に小さいものを拡大する変形を加えます。この結果、キャンバス内で表示可能なシェイプが表示されますが、中央に表示されたり、ズームされたりしません。

2番目のケースでは、すべてが重なって追加されますが、中央に配置されます。これは、パスのストレッチ値を設定すると発生します。

私は基本的に、キャンバスにジオメトリオブジェクトのセットを追加し、そのキャンバスのビューをその子の境界ボックスに焦点を合わせて移動させたいと考えています。 C#でプログラム的にこれをどうやってやるのですか?図形をハードコードする場合は、XAMLで行うのは簡単ですが、私の場合は、任意の図形とサイズに対して自動的に拡大/縮小する方法を知りたいと思っています。

答えて

0

コードビハインドでシェイプを追加する方法は、私にとっては大変素晴らしいものです。 Canvasを特定の領域の「フォーカス」に移動することは、自動的に行うことではありません。ただし、子供を移動するためにTranslateTransformを追加することができます。

canvas.RenderTransform = new TranslateTransform() { X = 100, Y=-100 }; 
関連する問題