2

这是我的问题的简短之处:在自定义控件中,有没有办法将其子控件的父绘制/bitblt 获取到背景图像,但不让子控件实际绘制在控件上?

详细信息: 我正在尝试推出自己的双缓冲(在紧凑框架上)并且遇到了很多问题。我有一个相当复杂的用户控件。它有一个Panel带有滚动Panel(可变大小)的视图(固定大小)。卷轴Panel上有几张卡片Panels。卡片面板垂直堆叠包含两个DataGrids和两个Labels

这是我的控件的视觉轮廓

查看面板
    |
    +--> 滚动面板
              |
              +---> 卡片面板
              | |
              | +--> 标签
              | +--> 标签
              | +--> 数据网格
              | +--> 数据网格
              |
              +---> 卡片面板
              | |
              | +--> 标签
              | +--> 标签
              | +--> 数据网格
              | +--> 数据网格
            (...)

好的,那么现在解决问题。我覆盖滚动面板的 on paint 并执行 bitblt 以获取图像以显示为“自定义绘画”。我通过保存它来测试图像,这正是我想要的。

问题是数据网格和标签仍然可以正常绘制。因此,当我滚动时,会留下文物。所以,我重写了 OnPaint 对网格和标签什么都不做。但是当我这样做时,bitblt 不再拾取网格(但奇怪的是它仍然拾取标签)。

那么,在自定义控件中,有没有办法让父控件将其子控件绘制/bitblt 到背景图像,但不让子控件实际绘制在控件上?

注意:如果您有兴趣查看我的完整代码,可以在此处查看

4

0 回答 0