К сожалению, нет портативного метода wx, который бы делал это масштабирование быстрее. Но есть метод Scale в порту Gtk в wxBitmap. Вы можете использовать это для wxGTK. Для wxMSW вы можете использовать StretchBlt из win32 API. В wxDC есть методы, которые предоставят вам собственный дескриптор HDC для Windows.
Вы можете сделать это несколько более прямым, если будете рисовать напрямую:
wxPaintDC dc(this);
dc.DrawBitmap(image, 0, 0, false);
Кроме того, не создавайте заново растровое изображение в каждом событии рисования. Сохраните его как участника и воссоздайте его только тогда, когда вы получите wxSizeEvent
. Это, вероятно, значительно ускорит вашу программу.
Другой способ - сбросить масштабирование и использовать wxGraphicsContext . Он использует Cairo на wxGTK и gdi + на wxMSW. Это относительно новый, но может рисовать сглаживание.