C# 如何获得picturebox非公开成员的价值?

C# 如何获得picturebox非公开成员的价值?,c#,C#,我需要从picturebox的非公共成员处获取图像矩形的值 如何获得该值 提前谢谢。好吧,你可以通过反思来实现。。。但你不应该。现在还不清楚“图像矩形的值”到底是什么意思,但是你应该尝试通过公共API来实现这一切。你想达到什么目标?可能有另一种方式 编辑:好的,现在我看到您试图访问的属性。。。您可能在2004年对该文件感兴趣。你不是唯一想要这个的人。。。尽管您是否出于同样的原因需要它,但我不知道。这是如何使用反射获取值: PropertyInfo pInfo = pictureBox1.GetT

我需要从picturebox的非公共成员处获取图像矩形的值

如何获得该值

提前谢谢。

好吧,你可以通过反思来实现。。。但你不应该。现在还不清楚“图像矩形的值”到底是什么意思,但是你应该尝试通过公共API来实现这一切。你想达到什么目标?可能有另一种方式


编辑:好的,现在我看到您试图访问的属性。。。您可能在2004年对该文件感兴趣。你不是唯一想要这个的人。。。尽管您是否出于同样的原因需要它,但我不知道。

这是如何使用反射获取值:

PropertyInfo pInfo = pictureBox1.GetType().GetProperty("ImageRectangle", 
    System.Reflection.BindingFlags.Public | 
    System.Reflection.BindingFlags.NonPublic | 
    System.Reflection.BindingFlags.Instance);

Rectangle rectangle = (Rectangle)pInfo.GetValue(pictureBox1, null);

不过,正如乔恩所说,也许有更好的方法来实现你的目标。通过反射访问私人成员通常是一个相当大的代码气味。

尽管Nivas没有说明他想要完成什么,但我怀疑这与我刚才看到的类似——将用户绘制(即裁剪)的矩形转换为picturebox的图像空间。我没有按照RvdK的建议尝试继承,我使用反射方法作为快速解决方法。除了RvdK的建议或Microsoft Open get access to ImageRectangle之外,还可以提供一个RectangleToImageRectangle方法。我想我可以把它包装成一个从PB继承的对象

Microsoft Connect问题链接已断开

这是我使用的代码,它提供了PB图像的矩形,并测试了.Zoom和.StretchImage模式:

PropertyInfo pInfo = pictureBox1.GetType().GetProperty("ImageRectangle",
            System.Reflection.BindingFlags.Public |
            System.Reflection.BindingFlags.NonPublic |
            System.Reflection.BindingFlags.Instance);

Rectangle ImRectangle = (Rectangle)pInfo.GetValue(pictureBox1, null);

Point rTL = new Point((rectCropArea.Left - ImRectangle.Left) * pictureBox1.Image.Width / ImRectangle.Width,
                      (rectCropArea.Top - ImRectangle.Top) * pictureBox1.Image.Height / ImRectangle.Height);
Size rSz = new Size(pictureBox1.Image.Width * rectCropArea.Width / ImRectangle.Width,
                    pictureBox1.Image.Height * rectCropArea.Height / ImRectangle.Height);

'rect' = new Rectangle(rTL,rSz);

你想用这个价值实现什么?我认为只有创建一个自己的picturebox才能成功,该picturebox继承了默认的picturebox并添加一个函数来检索非公共成员别忘了接受最有帮助的答案。单击相应答案旁边的向上和向下箭头旁边的勾号。@Skeet先生-他的意思是他想从
PictureBox
中获得
ImageRectangle
属性。