在System.Windows.Forms.Control的继承者中重写OnPaint或OnPaintBackground方法时,一个参数始终是System.Windows.Forms.PaintEventArgs对象.部分对象结构:
Graphics.Clip似乎是适用于后续绘制操作的像素的1位映射.
MSDN:"获取或设置一个限制此图形的绘图区域的区域."
Graphics.ClipBounds是一个只读矩形,看起来是完全包含Clip区域的最小矩形.
MSDN:"获取一个RectangleF结构,该结构绑定了此Graphics的剪切区域."
Graphics.VisibleClipBounds似乎是一个更"智能"的剪辑,但我无法理解它是如何运作的.
MSDN:"获取此Graphics的可见剪切区域的边界矩形."
在所有情况下,ClipRectangle似乎都复制了Graphics.ClipBounds属性.
MSDN:"获取要绘制的矩形."
有人可以回答主要问题,并可能阐明所有各种边界物体的用途吗?
编辑:根据Dan-o的回答添加了MSDN的描述.
Han*_*ant 13
PaintEventArgs.ClipRectangle是实际需要由Paint事件绘制的矩形.通常等于控件客户区的大小.当只有一部分与另一个窗口重叠时,它会更小.或者当您调用其Invalidate(Rectangle)方法时.您可以使用它来跳过绘制超出该矩形的昂贵对象.这是非常罕见的,Windows本身已经很好地削减了你绘制的内容.
Graphics.Clip是一个可以在绘图代码中指定的区域,用于剪切您自己绘制的内容.它允许各种效果,例如绘制由圆圈剪裁的图像.或者使用转换为区域的GraphicsPath的复杂剪切效果.
Graphics.ClipBounds是Graphics.Clip周围的矩形,它使得数学运算更快,无论一个点是否在Graphics.Clip之外,都可以得到一阶估计.如果您从未指定Clip属性,则会得到无意义的"无限"剪辑边界(X = -4194304,Y = -4194304,宽度= 8388608,高度= 8388608)
Graphics.VisibleClipBounds与Graphics.ClipBounds相同,但也被控制窗口剪切.测试一个点是否在 Clip区域内并且对用户可见是非常有用的.如果您从未分配Clip属性,那么您将获得窗口的大小.
所以它是Windows设置PaintEventArgs.ClipRectangle.其余的由您通过分配Graphics.Clip属性来设置.
| 归档时间: |
|
| 查看次数: |
4242 次 |
| 最近记录: |