私はキャンバスに六角形(ゲームマップ用)を作成するためにWPFシェイプを使用しています。 ScrollViewerを使って遊んだ後、私はWPF機能を使うのではなく、地図のスクロールとズームを実装することにしました。マウスホイール、矢印キーなどのイベントを取得するためにWPFを使用しています。 )CanvasはDock Panel内の最後の子であるため、使用可能な残りの領域をすべて取得します。ドックパネルは、メインウィンドウの内容に設定されます。しかしキャンバスに子供を置く前にキャンバスの大きさを知りたいので、私が望む六角形の上にスクリーンを置くことができ、実際に見ることができるシェイプ(六角)だけを追加することができます。ズームアウトすると、ポリゴンを完全に削除し、レンダリングの別の方法を使用します。ズームインすると詳細を追加します。WPF:Canvasで使用できるスペースを見つける方法
利用可能なスペースを得るためのきれいな方法はありますか?うまくいけば私が考えることができる唯一の方法は、ウィンドウの現在の寸法を取得し、Dockパネルの外側の要素の寸法を引くことですが、それはむしろ面倒です。
C#コードでHorizontalAlignmentをStretchに設定するにはどうすればよいですか? –
ああ、アライメントをコード内のストレッチに設定することはできましたが、とにかくそれがデフォルト値であるとは思えません。それはまだ私に0のサイズを与えます。 –
サイズを取得したいときは、Canvasが既に配置されていることを確認してください。 IsMeasureValidプロパティとIsArrangeValidプロパティを確認します。 ActualWidthとActualHeightが変化しているときに反応するために、SizeChangedイベントを見てください。 –