2011-01-14 11 views
0

Canvasに2つの子 - 画像と長方形があります。Silverlight Canvasの子のLeft&Topプロパティ値を取得する方法

次のように私は、矩形の高さを得ることができます(

inkCanvas1.Children[1].GetValue(Canvas.HeightProperty) 

が、私は左を試してみて、取得するとき:

rectangle.Height 

を私はまた、このような矩形の高さを得ることができますまたはTop)プロパティの値を返します。

inkCanvas1.Children[1].GetValue(Canvas.LeftProperty) 

これはちょうどゼロを返します。

Canvas.GetLeft(inkCanvas1.Children[1]) 

をしていることを返すにもゼロ:

また、私はこれを試してみました。

私が確信しているのは、RectangleのLeftプロパティとTopプロパティが0ではないことです(少なくとも、Rectangleを見て周囲を移動できるためです)。

解決方法

+0

アプリケーションに、これらのプロパティを設定しているコードがあります。たとえば、このオブジェクトを移動する外観を与えるために変換トランスフォームを使用しないでください。これを行うコードを表示できますか? – AnthonyWJones

+0

私は、これらのプロパティが明示的に設定されている場合にのみ設定されているように見えることに気づきました。たとえば、幅と高さのプロパティを設定しましたが、上と左のプロパティは設定しませんでした。しかし、上と左のプロパティを明示的に設定すると、上のメソッドを使用してそれらを取得できます。矩形がキャンバス上の位置にあるという事実は、明示的に設定されていなくても、彼の情報をどこかに保存しなければならないことを意味するため、この動作はちょっと奇妙です。 – descf

+0

はい、矩形の配置に関連する変換変換があり、描画後に矩形を描画するためのマウス座標を使用して、topプロパティとleftプロパティを設定しています。 – descf

答えて

0

私は今、同様の困難を抱えているので、私はこの質問を蘇生させると思った。キャンバスに画像を追加し、ストレッチプロパティをuniformに設定すると、画像も自動的に中央に配置されます。今では、イメージに四角形を描き、基底のビットマップからROIを得るためにデシールすると、私は間違った領域を取得します。これは、画像が中央に配置され、コードが画像の左上の点を0,0と仮定しているためです。難しいのは、上記のコードが0,0を返すため、イメージの実際の左上の点を取得できないということです。私のコードがうまく動作するために、イメージを左上の0,0の位置に置くように強制する方法も見つけられません。私はキャンバス上の位置に何かが座ることができても、そのポジションを退職する方法はないということが、不満を感じています。誰にもこれに対する解決策はありますか?

関連する問題