2011-09-28 102 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);