私は、部屋の束を含むSilverlightでマップを作成しています。すべての部屋はポリゴンで、ほとんどが長方形です。ポリゴンの中心にテキストを配置する際の問題
私がやっていることは、ルームのx座標を使ってポリゴンを作成することです。何かのように
Polygon p = new Polygon
p.points = pointCollection;
MainCanvas.Chilren.Add(p);
これは素晴らしいです。次に、各部屋の名前を地図上に入れたいと思います。私はちょうどポリゴンにテキストブロックの子を追加すると思った。残念ながら、UIElementsには子UIElementsを含めることはできないようです。私はこれがばかだと思うが、何でも。
次の計画:ポリゴンとテキストフィールドを含む新しいSilverlightユーザーコントロールを作成します。ユーザーコントロール内のポリゴンの中心テキストフィールド。だから私はちょうどこれらのUserControls "部屋"の1つを作成し、プロパティ "RoomShape"をポリゴンに設定し、それをキャンバスに追加します。ここでの問題は、Usercontrolが常に位置(0,0)に追加され、ルームの形状が右下の位置にあることです。私が本当に欲しかったのは、コントロールがポリゴンのサイズと形状を取ってそれを追加するために、中心を見つけてテキストを追加することでした。これは可能ですか?また
、のは、私がコントロールの私のレイアウトにポリゴンを追加するとしましょう:私はキャンバスの上にそれらをはっきりと見ることができるとき
LayoutRoot.Children.Add(poly);
はなぜ
poly.ActualHeight
poly.ActualWidth
poly.height
poly.width
すべてが0またはNaNを返すのですか? そして、なぜ私は、彼らが(0,0)に配置されていないはっきりと見ることができるとき
Canvas.GetTop(poly);
Canvas.GetLeft(poly);
両方が0を返すのですか?
ポリゴンにテキストをセンタリングするための他の提案があります。