GTK常用控件之图片控件( GtkImage )

图片控件和标签的作用很类似,都是作为显示用的,只是图片控件显示的内容是图片。

图片控件的创建:

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[])
{
	gtk_init(&argc, &argv); 	// 初始化

	GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);    // 创建窗口

	GtkWidget *hbox = gtk_hbox_new(TRUE, 10);       // 创建水平布局容器
	gtk_container_add(GTK_CONTAINER(window), hbox); // 把水平布局容器放入窗口

	// 创建图片控件,这种方法创建以图片默认大小来显示,不能修改
	GtkWidget *image_one =  gtk_image_new_from_file("./image/1.bmp");
	gtk_container_add(GTK_CONTAINER(hbox), image_one);// 添加到布局里

	// 下面借助GdkPixbuf来修改图片的大小,注意接口以gdk_开头,不属于控件类
	// 创建pixbuf,需要占用资源,使用完,需要人为释放
	GdkPixbuf *src = gdk_pixbuf_new_from_file("./image/1.bmp", NULL);// 读取原图片
	GdkPixbuf *dst = gdk_pixbuf_scale_simple(src,
		100, 100, GDK_INTERP_BILINEAR);	// 修改图片大小(100, 100), 保存在dst

	GtkWidget *image_two = gtk_image_new_from_pixbuf(dst);	// 通过pixbuf创建图片控件
	g_object_unref(src);	// pixbuf使用完,需要人为释放资源
	g_object_unref(dst);
	gtk_container_add(GTK_CONTAINER(hbox), image_two);	// 添加到布局里

	// 获取图片控件里的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);	// 添加到布局里

	// 给创建的图片控件重新设置一张图片
	GtkWidget *image_four =  gtk_image_new_from_file("./image/1.bmp");
	src = gdk_pixbuf_new_from_file("./image/2.bmp", NULL);// 读取原图片
	dst = gdk_pixbuf_scale_simple(src,
		200, 200, GDK_INTERP_BILINEAR);	// 修改图片大小(100, 100), 保存在dst
	gtk_image_set_from_pixbuf( GTK_IMAGE(image_four), dst );// 给image_four重新设置一张图片
	g_object_unref(src);	// pixbuf使用完,需要人为释放资源
	g_object_unref(dst);
	gtk_container_add(GTK_CONTAINER(hbox), image_four);	// 添加到布局里

	gtk_widget_show_all(window);	// 显示窗口控件

	gtk_main(); 	// 主事件循环

	return 0;
} 

程序运行效果图如下:

源代码下载请点此处。

时间: 2024-12-09 11:41:20

GTK常用控件之图片控件( GtkImage )的相关文章

VS2010/MFC常用控件:图片控件Picture Control

图片控件Picture Control 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)创建一个基于对话框的MFC工程,名称设置为“

VS2010-MFC(常用控件:图片控件Picture Control)

转自:http://www.jizhuomi.com/software/193.html 本节主要讲一种简单实用的控件,图片控件Picture Control.我们可以在界面某个位置放入图片控件,显示图片以美化界面. 图片控件简介 图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了. 图片控件静态和动态加载图片 下面为大家演示如何为图片控件静态和动态加载位图图片. 1. 图片控件静态加载图片 1)

GTK常用控件之按钮( GtkButton )

按钮在GUI里应用最为广泛,我们几乎能在所有的界面中看到按钮. 空按钮的创建(按钮上没有任何内容): GtkWidget *gtk_button_new(void); 返回值:按钮指针 创建带文本内容的按钮: GtkWidget *gtk_button_new_with_label (const gchar *label); label:文本内容 返回值:按钮指针 设置按钮的文本内容: void gtk_button_set_label(GtkButton *button, const gcha

Android02.常用布局及基本UI控件

一.Android学习API指南:[了解] 1. 应用的组成部分   App Components 1.1. 应用的基本原理    App Fundamentals 1.2. Activity      Activities 1.2.1. 片段    Fragments 1.2.2. 加载器     Loaders 1.2.3. 任务和返回堆    Tasks and Back Stack 1.3. Service服务   Services 1.3.1. 绑定服务     Bound Servi

【读书笔记-《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:

WPF控件到图片的转换

在实际的项目开发中,经常需要将信息保存成图片的形式,如屏幕截图.地图快照等操作,我中最近一个项目中便有这样的需求,项目(WPF)中用到GMap.NET控件,中地图上展示一些信息,过程中可能用户需要将地图信息保存下来,也就是地图快照,我的界面如下所示: 网上查了GMap相关的资料,没有找到GMap怎么截图的方法,最后找到网友提供的方法:将WPF控件转换成图片. 具体实现如下: namespace QACDR2.Common { internal enum ImageType { Bmp, Gif,

iOS开发——UI高级OC篇&amp;自定义控件之调整按钮中子控件(图片和文字)的位置

自定义控件之调整按钮中子控件(图片和文字)的位置 其实还有一种是在storyBoard中实现的,只需要设置对应空间的左右间距: 这里实现前面两种自定义的方式 一:imageRectForContentRect/titleRectForContentRect 自定义一个按钮控件在系统自带的位置设置方法中实现对应子控件位置调整 1 /** 2 3 * 设置内部图标的frame 4 5 */ 6 7 - (CGRect)imageRectForContentRect:(CGRect)contentRe

(转载)VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)

因为私人问题,鸡啄米暂停更新了几天,首先向关注鸡啄米动态的朋友说一声抱歉. 言归正传,鸡啄米上一节中讲了编辑框的用法,本节继续讲解常用控件--按钮控件的使用. 按钮控件简介 按钮控件包括命令按钮(Button).单选按钮(Radio Button)和复选框(Check Box)等.命令按钮就是我们前面多次提到的狭义的按钮控件,用来响应用户的鼠标单击操作,进行相应的处理,它可以显示文本也可以嵌入位图.单选按钮使用时,一般是多个组成一组,组中每个单选按钮的选中状态具有互斥关系,即同组的单选按钮只能有

UIScrollView控件实现图片缩放功能

UIScrollView控件实现图片缩放功能 iOS开发UI篇-UIScrollView控件实现图片缩放功能