如何在wxWidgets中设置透明背景颜色?

时间:2015-02-20 21:49:29

标签: c++ wxwidgets

我正在尝试创建一个位于桌面上的应用程序,该应用程序的主要图形是一个png,我将其作为wxStaticBitmap加载到我的程序中。

我的问题是png具有透明的部分,wxStaticBitmap正确呈现。但是,我需要透明度来显示到桌面。如图所示,窗口背景是透明的,因此图像的一部分是透明的,因此桌面背景在图像的透明部分中是可见的。

我尝试了几个想法,首先我尝试将窗口的背景颜色设置为透明,但由于我不知道的原因,它没有工作(虽然我最好的猜测是Windows不支持它),我尝试使窗口本身透明,这也使我的图像透明。

其他网站建议创建自定义小部件和其他神奇的诡计,但如果我能用纯wx做的话我会更喜欢它。

我的主要代码目前看起来像这样:

bool my_app::OnInit()
{
    my_frame* frame;
    wxStaticBitmap* background;

    wxImage::AddHandler(new wxPNGHandler());

    frame = new my_frame(wxT("my_window"));
    //bg is declared in the class declaration
    bg = wxBitmap(wxBufferedInputStream(wxFileInputStream(wxT(BACKGROUND_IMAGE)), 1000));

    background = new wxStaticBitmap(frame, frame->GetId(), bg, wxPoint(0, 0), wxSize(750, 300), 0L, "background");
    //my attempt at the elusive transparent background
    frame->SetBackgroundColour(wxColour(0xFF, 0xFF, 0xFF, 0x00));

    background->Show(true);
    frame->Show(true);

    return true;
}

有没有人有任何想法?

0 个答案:

没有答案