How to put a background image on a panel


#1

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.

Thanks,
T.


#2

See:
http://rubyforge.org/pipermail/wxruby-users/2009-January/004448.html


#3

2009/3/23 Mario S. removed_email_address@domain.invalid:

See: http://rubyforge.org/pipermail/wxruby-users/2009-January/004448.html

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

class Backdrop < Wx::Window
def initialize(parent, image)
@parent = parent
@image = Wx::Image.new(image)
super(parent)
evt_erase_background :on_erase_background
end

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

end

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

  file  = (DIR + '/images/cover.jpg')
  image = Backdrop.new(cover_panel, file)
  cover_sizer.add(image)

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.

T.


#4

Remove the set_size from the on_erase_background(), you shouldn’t use
set_size() in on_erase_background().