Re: Background image in a window

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi.
I was dealing with a similar problem not so long ago and came up withthis piece of code that does what you want (plus some more, so pleaseignore the commented sections - the main point of the example is theusage of expose-event event).
----------------#include <gtk/gtk.h>
static gbooleancb_expose( GtkWidget      *widget,		   GdkEventExpose *event,		   GdkPixbuf      *buf ){	gdk_draw_pixbuf( widget->window, NULL, buf, 0, 0, 0, 0, -1, -1,GDK_RGB_DITHER_NONE, 0, 0 );	return FALSE;}
intmain (int argc, char *argv[]){    GtkWidget         *window;    GtkWidget         *button;	GdkPixbuf         *buf;	GdkPixmap         *map;	GdkBitmap         *mask;
    gtk_init (&argc, &argv);
    window = gtk_window_new( GTK_WINDOW_TOPLEVEL );	gtk_container_set_border_width( GTK_CONTAINER( window ), 20 );	g_signal_connect( G_OBJECT( window ), "destroy",					  G_CALLBACK( gtk_main_quit ), NULL );		/*gtk_window_set_default_size( GTK_WINDOW( window ), 300, 300 );	gtk_window_set_decorated( GTK_WINDOW( window ), FALSE );	gtk_widget_realize( window );*/		buf = gdk_pixbuf_new_from_file( "test.png", NULL );	/*gdk_pixbuf_render_pixmap_and_mask( buf, &map, &mask, 10 );	gdk_window_shape_combine_mask( window->window, mask, 0, 0 );*/	gtk_widget_set_app_paintable( window, TRUE );	g_signal_connect( G_OBJECT( window ), "expose-event",					  G_CALLBACK( cb_expose ), buf );		button = gtk_button_new_with_label( "WOW" );	gtk_container_add( GTK_CONTAINER( window ), button );	    gtk_widget_show_all( window );    gtk_main();
    return 0;}--------------------

2008/12/6 zentara <zentara1@xxxxxxxxxxxxx>:> On Sat, 6 Dec 2008 09:55:55 +0530> "Harinandan S" <harinandans@xxxxxxxxx> wrote:>>>Hi All,>>>>How to set background image to a window? In my window there are few buttons.>>I want to set background image to the entire window? I googled but couldnt>>find much help.>>>>Regards,>>Harinandan S> Hi,> I use Perl and it was tough to figure that one out, because of the theme> engine, and the need to override it. If you use a pixmap based theme, it> is tenacious.>> However, if you want a Perl clue on how to do it, see renegadex's reply> at the bottom of>  http://perlmonks.org?node_id=530061>> the basics is to get the current style of the window, and reset the bg_pixmap>>  my $back_pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($image);>  my  ($pixmap,$mask) = $back_pixbuf->render_pixmap_and_mask(255);>  my  $style = $window->get_style(); $style=$style->copy();>  $style->bg_pixmap("normal",$pixmap); $window->set_style($style);>> it should be easy to convert to c.>>> Goodluck,> zentara>> --> I'm not really a human, but I play one on earth.> http://zentara.net/Remember_How_Lucky_You_Are.html> _______________________________________________> gtk-list mailing list> gtk-list@xxxxxxxxx> http://mail.gnome.org/mailman/listinfo/gtk-list>


-- Tadej Borovšak00386 (0)40 613 131tadeboro@xxxxxxxxxxxxxxxxxxxxxxx@gmail.com_______________________________________________gtk-list mailing listgtk-list@xxxxxxxxxxxxx://mail.gnome.org/mailman/listinfo/gtk-list

[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux