WxWidgets рисуют растровое изображение с непрозрачностью - PullRequest
0 голосов
/ 19 января 2010

Как мне нарисовать wxImage или wxBitmap на DC с непрозрачностью?Похоже, это невозможно со стандартным DC или с wxGraphicsContext.

BeginLayer / EndLayer еще не реализован в wxGraphicsContext, который был бы одним из решений.GDI +, похоже, не поддерживает слои, поэтому добавить это было бы нетривиально.

Единственное решение, по-видимому, заключается в программном изменении попиксельного альфа-канала?

1 Ответ

2 голосов
/ 20 мая 2010
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 );
 }
...