Reputation: 3503
I am using wxWidgets to design a GUI that draws multiple layers with transparency on top of each other.
Therefore I have one method for each layer that draws with wxGraphicsContext
onto the "shared" wxImage
, which is then plotted to the wxWindow
in the paintEvent
method.
I have the layer data in arrays exactly of the same dimension as my wxImage
and therefore I need to draw/manipulate pixel-wise, of course. Currently I am doing that with the drawRectangle
-routine. My guess is that this is quite inefficient.
Is there a clever way to manipulate wxImage
's pixel data directly, enabling me to still use transparency of each separate layer in the resulting image? Or is the 1x1 pixel drawing with drawRectangle
sufficient?
Thanks for any thoughts on this!
Upvotes: 1
Views: 513
Reputation: 22688
You can efficiently manipulate wxImage
pixels by just directly accessing them, they are stored in two contiguous RGB and alpha arrays which you can work with directly.
The problem is usually converting this wxImage
to wxBitmap
which can be displayed -- this is the expensive operation, and to avoid it raw bitmap access can be used to manipulate wxBitmap
directly instead.
Upvotes: 1