【问题标题】:Is there a way to get the target rectangle of a Graphics object?有没有办法获取 Graphics 对象的目标矩形?
【发布时间】:2010-09-21 15:41:00
【问题描述】:

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

编辑: 如答案中所述,应该可以访问为其创建 Graphics 对象的控件。这显然可以解决问题(实际上这是我目前用作解决方法的解决方案),但我故意要求一种没有控制的方法,只是因为我认为它应该是可能的。

【问题讨论】:

    标签: .net graphics


    【解决方案1】:

    如果你没有设置 Clip 属性来进一步限制绘图区域,它的默认设置将是整个图形区域,所以你应该可以使用 Clip.GetBounds() 返回一个描述绘图区域的 RectangleF。 ClipBounds 是 Graphics 对象本身的一个属性,它将返回相同的数据。

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

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

    【讨论】:

    • 这也是我的第一个想法,但 MSDN 指出如果未设置剪辑边界“无限大”。
    • 我没有访问控制图形的权限,太容易了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2022-01-07
    • 2012-03-21
    相关资源
    最近更新 更多