我有一个源自wxFrame
的MainFrame。该框架具有自定义类的面板成员m_panel
,派生自wxPanel
。
我重载了MainFrame的OnPaint()
函数来设置背景图片。
从背景图片中我只看到一个5像素的边框。其余的被wxPanel阻止。由于某种原因,我不能使面板透明。我尝试了m_panel->Hide()
,它完全没有效果m_panel->SetBackgroundStyle(wxBG_STYLE_CUSTOM)
。后者有奇怪的效果,我可以看到桌面(但背景图像仍然可以在5px边框中看到)。
我确实在wxTRANSPARENT_WINDOW
的构造函数中添加了wxPanel
样式。
如何设置此面板并使其透明?
答案 0 :(得分:1)
使用自定义wxPanel
覆盖OnPaint
以获取图纸。然后将其用作wxFrame
的主面板。示例如下所示:
class BackgroundPanel: public wxPanel
{
public:
BackgroundPanel(wxFrame* parent);
void OnPaint(wxPaintEvent & evt);
private:
wxBitmap backgroundBitmap;
DECLARE_EVENT_TABLE()
};
BackgroundPanel::BackgroundPanel(wxFrame* parent)
:wxPanel(parent)
{
//Set backgroundBitmap
}
void BackgroundPanel::OnPaint(wxPaintEvent& evt)
{
wxPaintDC dc(this);
int height = GetClientRect().GetHeight() - backgroundBitmap.GetHeight();
dc.DrawBitmap(backgroundBitmap,0,height,false);
}