GdkPixbuf如何用多个图片创建一个大图片

来源:互联网 发布:docker网络查询 编辑:程序博客网 时间:2024/04/28 23:13

     今天遇到一个问题,就是背景图片要使用一个圆角矩形,而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了。

                       

原创粉丝点击