Forum: wxRuby How to put a background image on a panel

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
C8651ca28887bad23ff86bddaca25a9b?d=identicon&s=25 Thomas S. (7rans)
on 2009-03-23 03:12
(Received via mailing list)
Well I've made a lot of progress on my app, but I'm stuck on figuring
out how to add a bitmap. I have a notebook and a page panel. On this
panel I want to put a backdrop image and scale it to the size of the
panel. How do I do this? I looked at some of the samples related to
bitmaps and I could not see how to apply that to my situation.

Mario Steele (Guest)
on 2009-03-23 09:59
(Received via mailing list)
C8651ca28887bad23ff86bddaca25a9b?d=identicon&s=25 Thomas S. (7rans)
on 2009-03-23 11:33
(Received via mailing list)
2009/3/23 Mario Steele <>:
> See:

Thanks. Though that only got me so far. I added:

  class Backdrop < Wx::Window
    def initialize(parent, image)
      @parent = parent
      @image  =
      evt_erase_background :on_erase_background

    def on_erase_background(evt)
      size = @parent.get_client_size
      @image.scale(size.get_width, size.get_height)
      evt.dc.draw_bitmap(@image.to_bitmap, 0, 0, false)

And then added an instance of it to my panel's boxsizer:

      file  = (DIR + '/images/cover.jpg')
      image =, file)

It draws the image initially but it isn't scaled for some reason and
then when I resize the window it shrinks to a small square.

Mario Steele (Guest)
on 2009-03-23 15:41
(Received via mailing list)
Remove the set_size from the on_erase_background(), you shouldn't use
set_size() in on_erase_background().
This topic is locked and can not be replied to.