在VB.Net Winforms中有一个通用的解决方案来防止子控件在父控件之外绘制

时间:2012-09-05 15:14:14

标签: vb.net winforms

我有一个包含1 ... N个子控件的父控件。当我水平滚动父级时,子控件也会滚动。

我想将子控件剪辑到父控件的边界。当我将剪辑区域设置为父控件的边界时,子控件绘制仍然呈现在父控件之外。

有没有办法将子控件剪辑到父控件的边界?

1 个答案:

答案 0 :(得分:0)

我现在正在裁剪 - 但可能不是最佳实践方法。我使用的方法如下。

但我想知道Paint事件处理程序中的UserControl.Region属性与同一处理程序中的Graphics.SetClip和Graphics.Clip的使用情况。 UserControl.Region属性似乎运行良好 - 但Graphics.SetClip和Clip没有任何效果。

我的猜测是UserControl.Region属性使用控制坐标,Graphics.SetClip和Clip期望不同的坐标系。这是对的吗?

方法:

  1. 计算控制坐标中的剪切矩形。在我的情况下,我想将我的自定义控件剪辑到DevExpress XtraChart XYDiagram(这样我的控件不会溢出到绘图区域之外)。

  2. 在我的控件事件处理程序中,将Region属性设置为在步骤1中计算的剪裁矩形。

  3. 我也很想知道在油漆事件中最小化闪烁的方法。任何意见将不胜感激。