Lam's Profil: bas. | A vue de nez et sans compiler:
Code :
- BEGIN_EVENT_TABLE(ImageCanvas, wxScrolledWindow)
- EVT_LEFT_DOWN(ImageCanvas::Clickage)
- END_EVENT_TABLE()
- wxBitmap monBitmap("truc.gif", wxBITMAP_TYPE_GIF);
- wxImage img = monBitmap.ConvertToImage();
- bool isDansLeVide(const wxImage & img, int x, int y)
- {
- if (img.HasAlpha())
- return img.GetAlpha(x,y) == 0;
- // assume we're not using the alpha channel, but we have a mask
- assert(img.HasMask());
- bool sameColorAsMask = img.GetGreen(x,y) == img.GetMaskGreen()
- && img.GetRed(x,y) == img.GetMaskRed(x,y)
- && img.GetBlue(x,y) == img.GetMaskBlue(x,y);
- return sameColorAsMask;
- void Clickage(wxMouseEvent & event)
- {
- int x,y;
- event.GetPosition(x,y);
- // ici, faire un GetViewStart() si nécessaire.
- bool vide = isDansLeVide(img, x, y);
- }
|
Perso, je trouve la gestion de la transparence assez mal fichue par défaut. Je préfère largement la gestion du canal alpha qu'il y a avec les PNG dans la version 2.5.3.
|