【发布时间】:2015-11-10 09:09:44
【问题描述】:
我有一个 MainFrame 并设置背景图像,我已经实现了自己的 OnPaint() 函数。
OnPaint(wxPaintEvent& roEvent)
{
if (!m_oBackgorund1.IsOk() || !m_oBackgorund2.IsOk())
return;
wxPaintDC paintDC(this);
switch (roEvent.GetId())
{
case 0:
paintDC.DrawBitmap(m_oBackgorund1, 0, 0);
break;
default:
paintDC.DrawBitmap(m_oBackgorund2, 0, 0);
break;
}
}
这两个位图之前已正确加载。启动我的应用程序时,图像 m_oBackgorund2 被设置为背景,因为事件的 GetId() 返回 -201。
之后,我启动一个线程,该线程以 0 或 1 作为 Id 触发事件
{
nId = !nId;
wxPaintEvent oPaintEvent;
oPaintEvent.SetId(nId);
wxPostEvent(GetParent(), oPaintEvent);
}
OnPaint 被该事件称为 correnty,位图根据 Id 设置。但是,更改不会显示在 UI 中。
如果我在OnPaint() 中调用Refresh(),则背景图像将被绘制为其他所有内容。
如何更新 wxFrame 的 Backgorund 图像而不让它覆盖所有其他 UI 元素?
谢谢!
【问题讨论】: