1

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

好吧,只是说我想拍一张玫瑰或其他东西的PNG图像,让它与后面的东西很好地融合在一起,让后面的东西重新绘制,并让它们的变化通过图片/窗口的透明部分闪耀。

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

4

4 回答 4

1

我发现使用 wxW 在屏幕上抛出一张透明图片其实很简单:

wxScreenDC dc;

wxBitmap bmp(wxT("test.png"), wxBITMAP_TYPE_PNG);
dc.DrawBitmap(bmp, 250, 100, true);

现在我必须找出如何处理更新等,它必须(可能部分重绘)当有更新时。

就像现在一样,它只是在自身之上重新绘制自己,使其在一段时间内变得完全不透明。

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

于 2009-06-15T01:44:15.000 回答
1

使用异形框架怎么样?

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* 以获得完整示例。

于 2010-01-14T04:17:08.187 回答
0

请参阅wxTopLevelWindow::SetTransparent

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

所以我猜wxWidgets可以做到。

于 2009-06-14T21:26:38.207 回答
0

如果您愿意做 C++ 以外的事情,可能还有其他跨平台选项,例如JavaFxAdob​​e AIR

于 2009-06-14T21:35:21.227 回答