2010-01-19 147 views
0

如何繪製wxImage或wxBitmap到具有不透明度的DC?它看起來不像標準的DC或wxGraphicsContext。WxWidgets繪製不透明度的位圖

BeginLayer/EndLayer尚未在wxGraphicsContext中實現,這本來就是一個解決方案。 GDI +似乎不支持圖層,所以添加這個並不重要。

唯一的解決方案似乎是以編程方式逐個像素地改變alpha通道?

+0

希望我能幫助,但我有我自己的wxWidgets的處理不透明的...... –

回答

2
void YourCustomWindow::OnPaint(wxPaintEvent& event) { 
    wxPaintDC dc(this); 
    wxImage image(width, height); 
    image.InitAlpha(); 
    unsigned char* imgdata = img.GetData(); 
    unsigned char* imgalpha = img.GetAlpha(); 


    // manipulate raw memory buffers to populate 
    // them with whatever image you like. 
    // Putting zeros everywhere will create a fully 
    // transparent image. 


    // almost done, but not quite... 
    // wxDC can only draw wxBitmaps, not wxImage, 
    // so one last step is required 
    // 
    wxBitmap bmp(image); 
    dc.DrawBitmap(bmp, 0, 0); 
} 
+0

這適用於版本2.8.x的問題,還沒有試過3.0 –

+0

對不起,我錯過了你的答案。祝一切順利。 – hplbsh