这是我的问题的简短之处:在自定义控件中,有没有办法将其子控件的父绘制/bitblt 获取到背景图像,但不让子控件实际绘制在控件上?
详细信息:
我正在尝试推出自己的双缓冲(在紧凑框架上)并且遇到了很多问题。我有一个相当复杂的用户控件。它有一个Panel
带有滚动Panel
(可变大小)的视图(固定大小)。卷轴Panel
上有几张卡片Panels
。卡片面板垂直堆叠包含两个DataGrids
和两个Labels
。
这是我的控件的视觉轮廓
查看面板 | +--> 滚动面板 | +---> 卡片面板 | | | +--> 标签 | +--> 标签 | +--> 数据网格 | +--> 数据网格 | +---> 卡片面板 | | | +--> 标签 | +--> 标签 | +--> 数据网格 | +--> 数据网格 (...)
好的,那么现在解决问题。我覆盖滚动面板的 on paint 并执行 bitblt 以获取图像以显示为“自定义绘画”。我通过保存它来测试图像,这正是我想要的。
问题是数据网格和标签仍然可以正常绘制。因此,当我滚动时,会留下文物。所以,我重写了 OnPaint 对网格和标签什么都不做。但是当我这样做时,bitblt 不再拾取网格(但奇怪的是它仍然拾取标签)。
那么,在自定义控件中,有没有办法让父控件将其子控件绘制/bitblt 到背景图像,但不让子控件实际绘制在控件上?
注意:如果您有兴趣查看我的完整代码,可以在此处查看。