Forum: wxRuby set the background to a bitmap

760e5c90000057a6860986b69b77c400?d=identicon&s=25 John Griffiths (indiehead)
on 2009-01-13 18:55
Hi,

any ideas whether you can set the background of a dialog to use an
image?
Fe061a5e90b738e88623292d7d2084d2?d=identicon&s=25 Eric Rubin (erubin)
on 2009-01-13 20:18
(Received via mailing list)
I have a WxRuby app running on Windows and I want to try to port it to
the
new Ruby 1.9.1.  I see  wxruby-ruby19-1.9.8 gems for Darwin and Linux,
but
not for Windows.  Is wxruby-ruby19-1.9.8 available for Windows yet?  If
not,
when will it be available?  And how stable is it?

Thanks,
Eric Rubin
06f6780c99d4a8dd71f2b474082ea9ce?d=identicon&s=25 Alex Fenton (Guest)
on 2009-01-13 20:48
(Received via mailing list)
John Griffiths wrote:
> any ideas whether you can set the background of a dialog to use an
> image?

Use evt_erase_background, which is meant for this:
http://wxruby.rubyforge.org/doc/eraseevent.html

The example below just fills with colour, but you could replace the call
to gradient_fill_linear with one to DC#draw_bitmap or whatever other
drawing/painting code yoou wanted. Please, just don't do anything as
eyesore as this ...

alex
__
require 'wx'

class BackgroundDialog < Wx::Dialog
  def initialize(parent)
    super(parent, :title => "dialog with background")
    Wx::TextCtrl.new(self, :value => 'foo', :pos => [ 50, 50 ])
    evt_erase_background :on_erase_background
  end

  def on_erase_background(evt)
    # Use the event's DC object to draw whatever background you want
    evt.dc.gradient_fill_linear( client_rect,
                                 Wx::RED, Wx::BLACK, Wx::NORTH )
  end
end

Wx::App.run do
  frame = Wx::Frame.new(nil, :title => 'frame')
  frame.show
  BackgroundDialog.new(frame).show
end
760e5c90000057a6860986b69b77c400?d=identicon&s=25 John Griffiths (indiehead)
on 2009-01-13 22:17
Thanks again Alex, will give that a go tomorrow and see how things turn
out.

Appreciate this
06f6780c99d4a8dd71f2b474082ea9ce?d=identicon&s=25 Alex Fenton (Guest)
on 2009-01-13 23:35
(Received via mailing list)
Eric Rubin wrote:
> I have a WxRuby app running on Windows and I want to try to port it to the
> new Ruby 1.9.1.  I see  wxruby-ruby19-1.9.8 gems for Darwin and Linux, but
> not for Windows.  Is wxruby-ruby19-1.9.8 available for Windows yet?  If not,
> when will it be available?

We'll definitely have a ruby19 gem available for Windows for the
upcoming 2.0 release (next week or so). Whether we offer both mingw and
mswin32 for Ruby 1.9.1 is not yet finalised, but in practice they're
interchangeable. There will certainly be mingw as that's the direction
the OCI is going in (for good reasons, IMHO).

>  And how stable is it?

Very. wxRuby has supported ruby 1.9 for a year now, and I switched over
mainline dev of my app to it a few months ago. There are also a lot of
changes in SVN HEAD which make it considerably more stable generally
than the current beta releaes, 1.9.9.

alex
760e5c90000057a6860986b69b77c400?d=identicon&s=25 John Griffiths (indiehead)
on 2009-01-15 14:36
Thanks Alex, I got the dialog to use a background image eventually, did
this with WxRuby 1.9.9 on Windows XP and it works (doesn't on OSX, but
don't need it to).

  def initialize(title)
    ......
    evt_erase_background :on_erase_background
  end

  def on_erase_background(evt)
    b_splash_bmp = Wx::Bitmap.new('images/background.gif',
BITMAP_TYPE_GIF)
    evt.dc.draw_bitmap(b_splash_bmp, 0, 0, false)
  end
This topic is locked and can not be replied to.