2011-09-28 185 views
5

背景如何獲得PictureBox中ImageRectangle的尺寸?

我希望能夠得到PictureBox的內部縮放圖像的繪製尺寸(我會在下面解釋)。

PictureBox.ImageRectangle屬性似乎正是我正在尋找的,因爲它顯示了調整大小的圖像的高度和寬度,以及它在控件內部的相對頂部,左側位置。

麻煩的是PictureBox.ImageRectangle是私人的,所以我不能讀取值沒有使用反射(這顯然是不理想的)。

實際問題

我的問題是,有另一種方式,我可以輕鬆地獲得這些值,而無需編寫算得了什麼價值「應該」是一種方法?我可以很輕鬆地做到這一點,但我覺得我會重新發明輪子。


語境:

我寫在C#中的簡單的圖像處理應用程序,它必須做的事情之一就是允許用戶繪製圖像的部分周圍的選擇(很像Photoshop中的選框工具)。

我需要知道渲染圖像的尺寸,因此我知道在哪裏設置我的選取框工具的邊界,並將繪製的矩形的值轉換爲控件內縮放的位圖上的點。

回答

2

我的回答看起來很簡單,所以也許我錯過了一些東西,但我認爲Control.DisplayRectangle適合您的需要。

編輯

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);