.net 有没有办法获得图形对象的目标矩形?

.net 有没有办法获得图形对象的目标矩形?,.net,graphics,.net,Graphics,如何从图形对象中检索(控件的)客户端矩形?我认为图形对象应该知道要绘制区域的坐标,但我不知道如何实际获取它 编辑:如答案中所述,应该可以访问为其创建图形对象的控件。这显然可以解决问题(实际上,这是我目前正在使用的解决方案),但我有意寻求一种不使用控件的方法,因为我认为这应该是可能的。如果您没有将Clip属性设置为进一步限制绘图区域,其默认设置将是整个图形区域,因此,您应该能够使用Clip.GetBounds()返回描述绘图区域的矩形。剪贴簿是图形对象本身的属性,它将返回相同的数据 如果知道生成图

如何从图形对象中检索(控件的)客户端矩形?我认为图形对象应该知道要绘制区域的坐标,但我不知道如何实际获取它


编辑:如答案中所述,应该可以访问为其创建图形对象的控件。这显然可以解决问题(实际上,这是我目前正在使用的解决方案),但我有意寻求一种不使用控件的方法,因为我认为这应该是可能的。

如果您没有将Clip属性设置为进一步限制绘图区域,其默认设置将是整个图形区域,因此,您应该能够使用Clip.GetBounds()返回描述绘图区域的矩形。剪贴簿是图形对象本身的属性,它将返回相同的数据

如果知道生成图形区域的控件,还可以使用控件的高度和宽度;图形区域的尺寸应相同


编辑:Grr。有人知道这个图形区域是从什么控件创建的。它很可能是渲染库方法之一的直接调用方。因此,如果您需要方法中绘图区域的可用限制,我只需要您的调用者接受它:接受可以应用于Graphics.ClipBounds的System.drawing.Size或System.drawing.Rectangle参数,或者要求通过测试Clip.IsInfinite()预剪裁图形区域如果为真,则抛出异常。

这也是我的第一个想法,但MSDN声明,如果不设置剪辑边界,则剪辑边界“无限大”。我无法访问图形的控件,这太容易了:)