+1  A: 

Sadly, there is no portable wx method to do that scaling faster. But there is a Scale method in the Gtk port in wxBitmap. You can use that for wxGTK. For wxMSW, you can use StretchBlt of the win32 API. There are methods in wxDC that will provide you with the native HDC handle for Windows.

You can make it somewhat more straight forward if you draw directly:

wxPaintDC dc(this);
dc.DrawBitmap(image, 0, 0, false);

Also, don't recreate the bitmap in each paint event. Store it as a member, and recreate it only when you get a wxSizeEvent. It will probably considerably speed up your program.

Another way is to drop the scaling altogether and use wxGraphicsContext. It uses Cairo on wxGTK, and gdi+ on wxMSW. It's relatively new, but can draw antialiased.

Johannes Schaub - litb