今天遇到一个问题,就是背景图片要使用一个圆角矩形,而GUI没有提供现成的,只是提供了圆角矩形的两边和中间填充的图片,需要自己来建立这个图片(这样建立背景图片可以更灵活,一个GUI可以用在多个应用中,我想这是他们没有直接提供的原因)。
具体来说,我要做到的事情是这样的,圆角矩形大小要为79*75,最左边圆角部分的图片给出,尺寸7*75,最右边圆角部分的图片也给出,尺寸5*75,中间部分要用一种1*75的图片连续帖这样填充出来,这样之后就得到我要的背景图片了。
因为我不懂GDK_PIXBUF,请教了我们组的一个亲切的哥哥后,终于知道怎么做了,帖出来给大家分享下:
思路如下:
首先建立目标pixbuf:
GdkPixbuf *bg_pixbuf = gdk_pixbuf_new(GDK_CLORSPACE_RGB,TRUE,8,79,75);
(这个时候这个图片还是空的,我们之后会来填充)
接着建立左边及右边圆角部分的那个pixbuf:
GdkPixbuf *left_pixbuf = gdk_pixbuf_new_from_file();
GdkPixbuf *right_pixbuf = gdk_pixbuf_new_from_file();
再建立中间填充部分那个1像素宽的pixbuf并将之拉伸到67像素宽:
GdkPixbuf *center_pixbuf = gdk_pixbuf_new_from_file();
GdkPixbuf *tianchong = gdk_pixbuf_scale_simple(center_pixbuf,67,75,GDK_INTERP_BILINEAR);
此时,再将left_pixbuf, tianchong, right_pixbuf依次填充到bg_pixbuf就能得到我们要的目标图片了:
gdk_pixbuf_copy_area(left_pixbuf,0,0,7,75,bg_pixbuf,0,0);
gdk_pixbuf_copy_area(tianchong,0,0,67,75,bg_pixbuf,7,0);
gdk_pixbuf_copy_area(right_pixbuf,0,0,5,75,bg_pixbuf,74,0);
这样我们就可以使用bg_pixbuf了。