如何在PictureBox中获取ImageRectangle的尺寸?

时间:2011-09-28 09:07:53

标签: c# .net windows graphics picturebox

背景

我希望能够在图片框中获得缩放图像的绘制尺寸(我将在下面解释)。

PictureBox.ImageRectangle属性似乎正是我正在寻找的属性,因为它显示了已调整大小的图像的高度和宽度,以及它在控件内的相对顶部,左侧位置。

问题是PictureBox.ImageRectangle是私有的,所以我不能在不使用反射的情况下读取值(这显然不是理想的)。

实际问题

我的问题是,是否有另一种方法可以轻松获取这些值而无需编写方法来计算“应该”的值?我可以轻松地做到这一点,但我觉得我会重新发明轮子。


上下文

我正在用C#编写一个简单的图像处理应用程序,它必须做的一件事是允许用户在图像的一部分周围绘制一个选区(很像Photoshop中的选框工具)。

我需要知道渲染图像的尺寸,以便知道在哪里设置选框工具的边界,并将绘制的矩形的值转换为控件内缩放位图上的点。

2 个答案:

答案 0 :(得分:2)

我的回答看起来很简单,也许我错过了一些东西,但我认为Control.DisplayRectangle适合你的需要。

编辑

好的,错过了重点;但请参阅How to get the value of non- public members of picturebox?

答案 1 :(得分:0)

如果要访问图片框中图像的尺寸,可以使用

GraphicsUnit units = GraphicsUnit.Point;

RectangleF imgRectangleF = pictureBox1.Image.GetBounds(ref units);
Rectangle imgRectangle = Rectangle.Round(imgRectangleF);