我想知道如何使窗户透明,而不是开孔或整体透明度相同。
好吧,只是说我想拍一张玫瑰或其他东西的PNG图像,让它与后面的东西很好地融合在一起,让后面的东西重新绘制,并让它们的变化通过图片/窗口的透明部分闪耀。
我可以(或愿意)使用 wxWidgets 或 OpenGL 之类的东西。但不是 Qt 或 GTK。
我想知道如何使窗户透明,而不是开孔或整体透明度相同。
好吧,只是说我想拍一张玫瑰或其他东西的PNG图像,让它与后面的东西很好地融合在一起,让后面的东西重新绘制,并让它们的变化通过图片/窗口的透明部分闪耀。
我可以(或愿意)使用 wxWidgets 或 OpenGL 之类的东西。但不是 Qt 或 GTK。
我发现使用 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\shape* 以获得完整示例。
如果您愿意做 C++ 以外的事情,可能还有其他跨平台选项,例如JavaFx和Adobe AIR。