【问题标题】:Stringray Grid transparent backgroundStringray 网格透明背景
【发布时间】:2011-01-16 23:09:27
【问题描述】:

Stringray grid 中,可以使用透明背景,允许通过网格显示对话框的背景。

在文档中指出:

但要小心;您应该禁用滚动,否则每次滚动时都必须重新绘制网格(通过覆盖DoScroll)。

我有一个可滚动的网格并覆盖 DoScroll 并确保我调用了 Redraw 并尝试了 Invalidate,但是网格仍未完全擦除和重绘。

我还尝试使用旧的绘图方法,将m_bForceOldDrawing 设置为TRUE

如何创建一个具有透明背景的网格,在滚动后正确绘制而不留下伪影?

【问题讨论】:

    标签: c++ mfc stingray


    【解决方案1】:

    是的,您必须通过覆盖 DoScroll 来重绘网格,因为它不再使用 ScrollWindow 来滚动内容,因为背景是透明的。

    但是,您现在的背景上有网格的伪影。

    这是因为网格后面的背景没有被重绘。

    您是否为父级设置了子剪辑?

    另一个潜在的问题是背景没有被绘制,因为它没有意识到它已经被曝光。

    尝试使用以下方式调用父级。

    父母.Invalidate(); 父级.UpdateWindow();

    打电话之前...

    无效();

    【讨论】:

    • 我的父母没有clipchildren。但是我现在在父级上使用 InvalidateRect 并且人工制品不再存在。但是现在重绘闪烁可怕地使它无法使用,还有更多建议吗?
    • 那是因为它在绘制父母和孩子之间交替。你有控件的源代码吗?如果是这样,您可以编辑控件以在绘制网格之前捕获父背景,并在 bitblt 之前在内存 DC 中绘制网格窗口的设备 DC。然后它就不会闪烁了。
    猜你喜欢
    • 2011-09-15
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 2010-11-22
    • 2021-09-20
    • 2019-02-07
    相关资源
    最近更新 更多