Problem
Suppose you want to have a single background image at the bottom right corner of a GtkWindow as shown below.
Solution
- If you've followed the article How to place a background image in GtkWindow - Part 3 - align top left - using GtkStyle?, you will know how to do this one too.
- Use Photoshop (or other image editing software) , load your image and increase the canvas size to 1920x1200. Move your image to where the bottom right corner of your application window size is (in this example, it's somewhere around x=480, y=240).
Sample Code
Note: The following image file (sample6_1920_bottom_right.png) is required by the sample code below. Please save a copy of the image files and put them in the same directory where you store the sample code.
![]() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <?php $window = new GtkWindow(); $window->set_size_request(480, 240); $window->connect_simple('destroy', array('Gtk','main_quit')); $window->add($vbox = new GtkVBox()); // display title $title = new GtkLabel(" Place a background image in GtkWindow\n". "Part 4 - align bottom right - using GtkStyle"); $title->modify_font(new PangoFontDescription("Times New Roman Italic 10")); $title->modify_fg(Gtk::STATE_NORMAL, GdkColor::parse("#0000ff")); $title->set_size_request(-1, 40); $vbox->pack_start($title, 0); $vbox->pack_start(new GtkLabel(), 0); $vbox->pack_start(new GtkLabel("Try enlarge the window.")); $vbox->pack_start(new GtkLabel("There's only one image.")); $vbox->pack_start(new GtkLabel("But the background image ". "stays at the same place!")); // set background image $pixbuf=GdkPixbuf::new_from_file("sample6_1920_bottom_right.png"); list($pixmap,$mask)=$pixbuf-> render_pixmap_and_mask(255); $style = $window->get_style(); $style=$style->copy(); $style->bg_pixmap[Gtk::STATE_NORMAL]=$pixmap; $window->set_style($style); $window->show_all(); Gtk::main(); ?> |
Output
As shown above.Explanation
The sample code above is exactly the same as that of the article How to place a background image in GtkWindow - Part 2 - tiled background image? (The only diffference is the background image.)
Pleaes refer to the article for explanations.
Note
Try changing the window size. Notice that the background image stays at the same old place and does not 'stick' to the bottom right corner of the window as shown below:
So this method is only suitable if you know that your user will not change the window size, or you always run your application in full-screen mode.
To make the background image stays at the bottom right corner of the window (no matter how the user changes the window size), please refer to the solution presented in How to place a background image in GtkWindow - Part 6 - align bottom right - GdkDrawable draw_pixbuf?
Related Links
- How to place a background image in GtkWindow - Part 2 - tiled background image?
- How to place a background image in GtkWindow - Part 3 - align top left - using GtkStyle?
- How to place a background image in GtkWindow - Part 5 - align top left - using GdkDrawable draw_pixbuf?
- How to place a background image in GtkWindow - Part 6 - align bottom right - GdkDrawable draw_pixbuf?
- How to change background image on the fly?
Read more...