如何通过隐藏\剪辑来仅显示控件的一部分?

时间:2012-01-18 04:17:00

标签: c# windows forms graphics user-controls

我有一个从System.Windows.Forms.UserControl派生的控件,它放在一个自定义的网格中。当网格的第一列被冻结并且网格滚动几个像素时,第二列变得部分可见,使得该列中的控件也变得部分可见。

为了实现这一点,我希望能够通过隐藏/剪切控件的左侧部分来仅显示可见的控件部分。

我不想修改控件的OnPaint,因为我无法访问控件的代码。我可以更改显示控件的网格中的代码。

我尝试了以下哪些不起作用: 1.仅使必须可见的控件的一部分无效。 2.使用GraphicsPath如下:

System.Drawing.Drawing2D.GraphicsPath controlPath = new System.Drawing.Drawing2D.GraphicsPath();
controlPath.AddRectangle(visibleRect);
editControl.Region = new Region(controlPath);

还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

我得到了这个有效的解决方案:

使用 GraphicsPath 工作。我没有正确设置剪辑矩形,因为我无法看到剪辑发生。不是将剪辑区域的xOffset设置为网格,而是必须将剪辑区域wrt设置为控件。 窗口区域是操作系统允许绘制的窗口内的像素集合。操作系统不显示位于窗口区域之外的窗口的任何部分。控件区域的坐标是相对于控件的左上角,而不是控件的客户区域(http://msdn.microsoft.com/en-us/library/ddhy6052(vs.71).aspx