Re: Resize and place a background image (Expose Event)
- From: Rúben Rodrigues <ruben_gr live com pt>
- To: "gtk-app-devel-list gnome org" <gtk-app-devel-list gnome org>
- Subject: Re: Resize and place a background image (Expose Event)
- Date: Thu, 2 Mar 2017 09:26:21 +0000
Hi,
I have made progress, i use this function to make the resize: pixbuf =
gdk_pixbuf_scale_simple(pixbuf, widget->allocation.width,
widget->allocation.height, GDK_INTERP_BILINEAR);
This works, but application blocks after a while..
Here is the Expose event function:
void on_layout_Home_expose_event(GtkWidget *widget, GdkEvent *event,
gpointer user_data){
GtkAllocation allocation;
GtkWidget *homeWindow;
GdkPixmap *background;
GtkStyle *style;
pixbuf = gdk_pixbuf_scale_simple(pixbuf, widget->allocation.width,
widget->allocation.height, GDK_INTERP_BILINEAR);
gdk_pixbuf_render_pixmap_and_mask (pixbuf, &background, NULL, 0);
style = gtk_style_new ();
style->bg_pixmap[0] = background;
gtk_widget_set_style (GTK_WIDGET(widget), GTK_STYLE(style));
return TRUE;
}
Thanks
Às 17:04 de 01/03/2017, Rúben Rodrigues escreveu:
Hi,
I'm trying to make something like this
http://www.kksou.com/php-gtk2/sample-codes/place-a-background-image-in-GtkWindow-Part-6-align-bottom-right-GdkDrawable-draw_pixbuf.php
but in C language. For now i just want to fill background image to
it's cointainer (GtkLayout), because the container is bigger than
image, image is displayed in tiles...
So, i make something like this:
// Load model drawing from file.
if((pixbuf = gdk_pixbuf_new_from_file("background.png", &error))
== NULL) {
g_print("Error.\n");
return -1;
}
void on_layout_Home_expose_event(GtkWidget *widget, GdkEvent *event,
gpointer user_data){
GtkAllocation allocation;
GtkWidget *homeWindow;
GdkPixmap *background;
GtkStyle *style;
int w = gdk_pixbuf_get_width(pixbuf);
int h = gdk_pixbuf_get_height(pixbuf);
gtk_widget_get_allocation(GTK_WIDGET(widget),&allocation);
// Set picture as background.
homeWindow = GTK_WIDGET(gtk_builder_get_object(builder,
"layout_Home"));
gdk_pixbuf_render_pixmap_and_mask (pixbuf, &background, NULL, 0);
style = gtk_style_new ();
//style->bg_pixmap[0] = background;
gdk_draw_pixbuf(style->bg_pixmap[0],NULL,pixbuf,0,0,allocation.width-w-10,allocation.height-h-10,-1,-1,GDK_RGB_DITHER_NONE,0,0);
gtk_widget_set_style (GTK_WIDGET(homeWindow), GTK_STYLE(style));
// if(gtk_container_get_children(widget) != NULL){
// gtk_widget_send_expose
(gtk_container_get_children(widget),event);
// }
return TRUE;
}
But this doesn't work.. and it's normal that program return everytime
to expose_event?
Thanks
---
Este e-mail foi verificado em termos de vírus pelo software antivírus
Avast.
https://www.avast.com/antivirus
---
Este e-mail foi verificado em termos de vírus pelo software antivírus Avast.
https://www.avast.com/antivirus
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]