|
在用GTK编程时,我想在程序界面上设置背景图片,如何设置背景图片,我已经知道,现在的问题是,对于不同的屏幕分辨率,如果整个程序界面只设置一个大的背景图片的话,那么在分辨率很大时,程序界面将会产生畸形。
请问大家如何分区域设置背景图片?
急!
谢谢!
例如:(下面代码只是初略表达一下我要问的问题)
#define MAIN_W 1024
#define MAIN_H 768
GtkWidget *mainWin;
GtkWidget *mainFixed;
GtkWidget *fixed;
GdkPixmap *bg;
mainWin = gtk_window_new(GTK_WINDOW_TOPLEVEL) ;
gtk_widget_set_usize( mainWin, MAIN_W, MAIN_H );
gtk_container_add( GTK_CONTAINER(mainWin), mainFixed );
gtk_widget_set_usize( fixed, 400, 300 );
gtk_fixed_put( GTK_FIXED(mainFixed), fixed, 100, 100 );
我现在只想在fixed这个固定大小的容器内设置背景图片。
也就是,背景图片bg只填充 400*300 这片区域。 于是就用到
gdk_window_set_back_pixmap( fixed->window, bg, FALSE ) ;
但是这样设置之后的效果,是图片bg填满了整个 1024*768 的区域。
int x, y, w, h;
于是我就想看看fixed->window 到底占的是哪一块区域,用 gdk_window_get_geometry( fixed->window, &x, &y, &w, &h, NULL );
结果发现 x = 0, y=0, w=1024, h = 768 并非与当初设置的 400, 300一致
于是我又想用 gdk_window_move_resize( fixed->window, 100, 100, 400, 300 )来改变fixed->window所占的区域,然后再
用gdk_window_set_back_pixmap(fixed->window, bg, FALSE );使得bg图片填满 fixed->window区域
这样费尽周折之后, bg图片竟然还是填充1024*768 整个区域。 天呐,到底是咋回事呢??
麻烦知情者,解惑。 不甚感激! |
|