我正在尝试创建一个位于桌面上的应用程序,该应用程序的主要图形是一个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;
}
有没有人有任何想法?