图片控件和标签的作用很类似,都是作为显示用的,只是图片控件显示的内容是图片。
图片控件的创建:
GtkWidget *gtk_image_new_from_file( const gchar *filename );
filename:图片的名字,带路径的话需要加上路径( 相对或绝对 )
返回值:图片控件指针
通过上面方法创建的图片控件,以图片默认大小来显示,不能修改其大小。如果要改变图片的大小,我们要借助图片资源对象GdkPixbuf,需要注意的是,GdkPixbuf不属于控件类,它以 Gdk 开头。
图片资源对象pixbuf的创建:
GdkPixbuf *gdk_pixbuf_new_from_file(
const gchar *filename, GError **error);
filename:图片的名字,带路径的话需要加上路径( 相对或绝对 )
error:储存错误的指针
返回值:pixbuf指针
设置图片的大小:
GdkPixbuf *gdk_pixbuf_scale_simple(
const GdkPixbuf *src, int dest_width,
int dest_height, GdkInterpType interp_type);
src:gdk_pixbuf_new_from_file()的返回值
dest_width:图片的宽度
dest_height:图片的高度
interp_type:是一个枚举变量,标志图片的加载速度和质量,常用GDK_INTERP_BILINEAR
返回值:指定大小好的pixbuf指针
通过gdk_pixbuf_new_from_file(), gdk_pixbuf_scale_simple()创建的pixbuf,它会动态分配空间,占用资源,用完后,需要人为释放资源。
释放资源:
void g_object_unref(GtkObject *object);
object:需要释放的对象
通过pixbuf来创建图片控件:
GtkWidget *gtk_image_new_from_pixbuf(
GdkPixbuf *pixbuf );
pixbuf:指定好大小的pixbuf
返回值:图片控件指针
图片控件重新设置一张图片(pixbuf):
void gtk_image_set_from_pixbuf(
GtkImage *image, GdkPixbuf *pixbuf );
image:图片控件指针
pixbuf:指定好大小的pixbuf
例子代码如下:
#include <gtk/gtk.h> int main(int argc,char *argv[]) { //1.gtk环境的初始化 gtk_init(&argc, &argv); //2.创建一个窗口window GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //3.创建一个水平布局容器hbox GtkWidget *hbox = gtk_hbox_new(TRUE, 10); //将hbox添加到window gtk_container_add(GTK_CONTAINER(window), hbox); //4.创建一个图片控件 GtkWidget *image_one = gtk_image_new_from_file("./img/1.png"); //将image_one添加到hbox gtk_container_add(GTK_CONTAINER(hbox), image_one); //5.通过GdkPixbuf来写该图片大小 //5.1创建pixbuf,需要占用资源,使用完需要释放 GdkPixbuf *src = gdk_pixbuf_new_from_file("./img/2.png", NULL); //5.2修改图片大小 GdkPixbuf *dst = gdk_pixbuf_scale_simple(src,100,100,GDK_INTERP_BILINEAR); GtkWidget *image_two = gtk_image_new_from_pixbuf(dst); //5.3pixbuf使用完需要释放其中资源 g_object_unref(src); g_object_unref(dst); //5.4将image_two添加到hbox中 gtk_container_add(GTK_CONTAINER(hbox), image_two); //6.获取图片控件里的pixbuf,并以这个pixbuf又重新创建一个控件 GdkPixbuf *tmp = gtk_image_get_pixbuf(GTK_IMAGE(image_two)); GtkWidget *image_three = gtk_image_new_from_pixbuf(tmp); gtk_container_add(GTK_CONTAINER(hbox), image_three); //7.给创建的图片控件重新设置一张图片 GtkWidget *image_four = gtk_image_new_from_file("./img/1.png"); gtk_container_add(GTK_CONTAINER(hbox), image_four); //更换图片 src = gdk_pixbuf_new_from_file("./img/4.png", NULL); dst = gdk_pixbuf_scale_simple(src,200,200,GDK_INTERP_BILINEAR); gtk_image_set_from_pixbuf(GTK_IMAGE(image_four), dst); //8.显示所有控件 gtk_widget_show_all(window); //9.主事件循环 gtk_main(); return 0; }
源码下载:http://download.csdn.net/download/lianghe_work/8939307
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/lianghe_work/article/details/47103039