【问题标题】:wxBufferedDC can get to workwxBufferedDC 可以开始工作了
【发布时间】:2014-10-07 18:58:23
【问题描述】:

您好,我在 c++ 中使用 wxWidgets,我一直在使用 wcClientDC 在绘图事件之外进行绘制,这会导致闪烁。我需要使用 wxBufferedDC 的帮助。我实际上只是用 wxBufferedDC 替换了 wxClientDC,我拉紧这会起作用,但由于 ghe 构造函数参数,代码无法编译。

我的工作代码是:

wxClientDC dc (panel2);

替换为:

wxBufferedDC dc (panel2);

我需要做什么才能使用 wxBufferedDC?

【问题讨论】:

    标签: wxwidgets


    【解决方案1】:

    要修复闪烁,您必须避免从wxEVT_PAINT 处理程序外部进行绘图,无论如何,如果您很快要重绘窗口,缓冲绘图并没有多大帮助。因此,不要用wxBufferedDC 替换wxClientDC,而是完全摆脱wxClientDC 并使用wxAutoBufferedPaintDC 而不是wxPaintDC

    【讨论】:

    • 您好,感谢您的回复。我不是我明白你在说什么。目前在计时器触发事件​​中,我更新了面板上的图表。使用 wxClient 会导致闪烁。如何在我的时间触发事件中使用 wxAutoBufferedDC?
    • 你会从定时器事件中Refresh()窗口,然后像往常一样绘制它。
    • 我不能只刷新我的面板吗?
    • 感谢 VZ 的帮助,我最终使用 wxBufferedPaintDC 并将 EVT_ERASEBACKGROUND 设置为空白。由于对 wxBACKGROUNDStyle 的某些调用,我无法使 wxAutoBufferedPaintDC 工作 ???。但是让我知道真正帮助我的 refresh()。
    • 背景样式assert应该是不言自明的:你应该调用SetBackgroundStyle(wxBG_STYLE_PAINT)以避免两次擦除背景,这是什么问题?
    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2018-01-20
    • 1970-01-01
    相关资源
    最近更新 更多