2011-09-28 29 views
5

背景PictureBoxでImageRectangleの寸法を取得するにはどうすればよいですか?

私は(私は以下を説明します)のPictureBox内のズーム画像の描かれた寸法を得ることができるようにしたいです。

PictureBox.ImageRectangleプロパティは、リサイズされたイメージの高さと幅、およびコントロール内の相対的な左上の位置を示すため、正確に私が探しているものと思われます。

問題はPictureBox.ImageRectangleがプライベートなので、反射を使用せずに値を読み取ることはできません(これは明らかに理想的ではありません)。

実際の質問

私の質問があり、私は簡単に値があることを「べき」ものを計算するための方法を記述することなく、これらの値を得ることができる別の方法はありますか?私はそれを十分に簡単に行うことができますが、私は車輪を再発明していると感じています。


コンテキスト:

(私はC#で簡単な画像処理アプリケーションを書いているし、それが関係しているものの一つは、ユーザーが画像の一部分の周りに選択を描画することが可能ですPhotoshopのマーキーツールによく似ています)。

マーキーツールの境界をどこで設定するか、描画された矩形の値をコントロール内のスケーリングされたビットマップ上のポイントに変換するためにレンダリングされるイメージのサイズを知る必要があります。

答えて

2

私の答えはシンプルなので多分私は何かを見逃していますが、私はControl.DisplayRectangleがあなたの必要性に合っていると思います。

EDIT

OKは、ポイントを逃しました。しかし参照How to get the value of non- public members of picturebox?

+0

を使用することができますが、このCharlesBを見ていただきありがとうございます。私は反射を含まない解決策を見つけることを望んでいたので、私は努力し続けるつもりです。再度ありがとう:) –

+0

あなたを歓迎します。 [MS Connectの問題](http://connect.microsoft.com/VisualStudio/feedback/details/115469/make-pictureboxs-imagerectangle-property-public)に投票することを忘れないでください。 – CharlesB

0

あなたがピクチャボックスに画像の大きさにアクセスしたい場合は、

GraphicsUnit units = GraphicsUnit.Point; 

RectangleF imgRectangleF = pictureBox1.Image.GetBounds(ref units); 
Rectangle imgRectangle = Rectangle.Round(imgRectangleF); 
関連する問題