C++ C+中的跨平台透明窗口+;?

C++ C+中的跨平台透明窗口+;?,c++,cross-platform,transparency,C++,Cross Platform,Transparency,我想知道如何使窗户透明,而不是切割孔或相同的整体透明度 好吧,就说我想拍一张玫瑰或其他东西的PNG图像,让它与后面的东西很好地融合,让后面的东西重画,让它们的变化通过图片/窗口的透明部分发光 我可以(或想)使用wxWidgets或OpenGL之类的东西。但不是Qt或GTK。请参阅 如果平台支持,则会将窗口设置为半透明 p> >我想WxWiWiGes可以做到。 如果你愿意做一些除C++以外的其他事情,可能有其他的跨平台选项,比如.& /p>< p>我发现使用WxW:在屏幕上抛出透明图片其实很简单

我想知道如何使窗户透明,而不是切割孔或相同的整体透明度

好吧,就说我想拍一张玫瑰或其他东西的PNG图像,让它与后面的东西很好地融合,让后面的东西重画,让它们的变化通过图片/窗口的透明部分发光

我可以(或想)使用wxWidgets或OpenGL之类的东西。但不是Qt或GTK。

请参阅

如果平台支持,则会将窗口设置为半透明


<> p> >我想WxWiWiGes可以做到。

如果你愿意做一些除C++以外的其他事情,可能有其他的跨平台选项,比如.& /p>< p>我发现使用WxW:

在屏幕上抛出透明图片其实很简单。
wxScreenDC dc;

wxBitmap bmp(wxT("test.png"), wxBITMAP_TYPE_PNG);
dc.DrawBitmap(bmp, 250, 100, true);
现在,我必须找出如何处理更新,这样,当更新下面的内容出现时,它必须被(可能部分地重新绘制)

正如它现在的样子,它只是在自己的顶部重新绘制自己,使它在一段时间内变得完全不透明


还有另一个版本的wxScreenDC::DrawBitmap以窗口为参数,也许是它解决了这个问题?

使用成形框架如何

wxBitmap m_bmp = wxBitmap(_T("redroseonwhite.png"), wxBITMAP_TYPE_PNG);
SetSize(wxSize(m_bmp.GetWidth(), m_bmp.GetHeight()));
wxRegion region(m_bmp, *wxWHITE);
bool m_hasShape = SetShape(region);

查看*wxWidgets-2.9.0\samples\shaped*查看完整示例。

我知道该函数,它将整个窗口设置为相同的透明度。不是我的意思。我想让一些像素完全透明,一些像素完全不透明,还有许多像素介于两者之间。就像这张来自网络的随机图片(在谷歌搜索“redrose.png”):它的边缘是透明的,使它与后面的任何东西融合在一起。看看,你会发现窗户的某些部分是透明的。我个人(真的)很不喜欢这两个部分。不,答案很简单。AdobeAIR如今更不跨平台,因为他们已经放弃了对包括我的主要平台(Linux和Android)在内的多个平台的支持。我只是好奇,这些优势不是变得参差不齐了吗?(别名问题)现在我觉得我必须完全自己做,看看如何在我想要支持的每个平台上做(X上的X-server复合扩展,windows上的任何东西,等等)