LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1625|回复: 2

急! 请教大家GTK编程中针对不同屏幕分辨率,如何分区域设置背景图片?

[复制链接]
发表于 2008-1-3 20:02:05 | 显示全部楼层 |阅读模式
在用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 整个区域。    天呐,到底是咋回事呢??


    麻烦知情者,解惑。   不甚感激!
发表于 2008-1-3 20:33:42 | 显示全部楼层
用gtkrc文件,把此widget的bg设为你需要的图片。
不确定能否自适应分辨率,你可以试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-3 21:00:51 | 显示全部楼层
Post by jetking;1802833
用gtkrc文件,把此widget的bg设为你需要的图片。
不确定能否自适应分辨率,你可以试试






非常感谢.    经常看到别人说用gtkrc文件, 但是还不知道具体该如何使用,


      我试一下先。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表