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

图片控件的创建:

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.创建一个窗口windowGtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);//3.创建一个水平布局容器hboxGtkWidget *hbox = gtk_hbox_new(TRUE, 10);//将hbox添加到windowgtk_container_add(GTK_CONTAINER(window), hbox);//4.创建一个图片控件GtkWidget *image_one = gtk_image_new_from_file("./img/1.png");//将image_one添加到hboxgtk_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

转自:

GTK常用控件之图片控件( GtkImage )相关推荐

  1. Gtk常用控件 按钮 图片控件 进度条 滑动窗口 分栏列表

    Gtk常用控件 按钮(GtkButton) // 带图标按钮的创建 // image: 通过 gtk_image_new_from_file()来创建, 参数为图片的路径 void gtk_butto ...

  2. Flutter基础—常用控件之图片

    Image控件即图片控件,是显示图像的控件,Image控件有多种构造函数: new Image,用于从ImageProvider获取图像. new Image.asset,用于使用key从AssetB ...

  3. android 绘制正方形图片,是Android的自定义View-绘制流程-正方形图片控件(SquareImageView)...

    前言 了解View的绘制三大流程后,接下来就要对这些知识做一个实践,首先来实现一个在Android中最为常见的控件--方形图片控件,即让图片在一个方形区域内显示,最常见的场景是在九宫格图片当中. 一般 ...

  4. scenebuilder各控件属性介绍_C#控件及常用设计整理(三)

    C#控件及常用设计整理(三) 12.CheckedListBox 控件 CheckedListBox控件又称复选列表框,它扩展了ListBox控件,它几乎能完成列表框可以完成的所有任务,并且还可以在列 ...

  5. 常用中后台交互设计控件使用场景与规范总结

    作者: panda  (转载已取得作者授权) 此设计规范主要分享了中后台常用设计组件的定义.组成.使用场景及注意事项. 字体 概述 字体是界面设计中最基本的构成元素之一,用户通过文字来理解内容和完成任 ...

  6. C# PictureBox 图片控件

    图片控件中常用的属性如下表所示: 图片控件中图片的设置除了可以直接使用 ImageLocation 属性指定图片路径以外, 还可以通过 Image.FromFile 方法来设置.实现的代码如下: 图片 ...

  7. VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)

    前面两节为大家讲了列表视图控件List Control,这一节开始介绍一种特殊的列表--树形控件Tree Control. 树形控件简介 树形控件在Windows系统中是很常见的,例如资源管理器左侧的 ...

  8. 实现picturecontrol控件显示图片_陕西曝光机触摸屏实时数据控件

    随着市场需求的快速发展,PCB行业对产能的要求与日俱增.为了在保证品质的前提下快速提高产能,PCB曝光领域掀起了一场新的革命,那就是对传统曝光机进行UVLED改造,用UVLED光源代替传统汞灯.目前市 ...

  9. MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片

    最近有同学问我如何实现MFC基于对话框在图片控件中加载图片?其实使用MFC显示图片的方法各种各样,但是还是有些同学不知道怎样显示.以前在<数字图像处理>课程中完成的软件都是基于单文档的程序 ...

最新文章

  1. 使用Struts2上传文件超过2M报错解决方法
  2. 3维DEMO: 抽奖圆盘
  3. 服务网格架构激活了容器网络管理—来自于服务网格创建者们的见解与展望
  4. C#提取HTML代码中的文字(转)
  5. 天正双击墙体不能编辑_今日设计分享:CAD常用快捷键、Ps快捷键大全、天正快捷键总结!...
  6. mysql php 时间比较大小_mysql中日期大小比较实例
  7. 5-5图层的链接-新版本不常用
  8. lesson1 ODE的几何解法:方向场,积分曲线
  9. 转:oracle常见重要视图-v$sql,v$sql_plan,v$sqltext,v$sqlarea,v$sql_plan_statistcs
  10. SQL_Server_2008完全学习之第五章操作架构、索引和视图
  11. 2022年低压电工考试题库及模拟考试
  12. 科普两个著名人工智能思想实验:图灵测试和中文房间
  13. python中的def是什么意思啊_python中的def是什么意思
  14. Java练习——删库跑路(定时器删除文件夹)
  15. Windows11/10 使用RDP远程桌面时提示 您的凭据不工作/登录没有成功可能的一种原因
  16. 虚拟机改IP地址的方式
  17. mysql三级联动查询_记录地区三级联动查询
  18. 做一个音视频点播系统要多久?操作越简单越好
  19. 10名IB学生获得满分,新加坡环球印度国际学校成为一匹黑马
  20. [转载]升华思想境界,走出博士的专家路线

热门文章

  1. 计算机主机 响,电脑主机嗡嗡响怎么办
  2. PythonOCC基础使用:建模——基础三维实体(球体,长方体,棱柱/台/锥,圆柱/锥/台,环形)
  3. PSO(粒子群算法)
  4. mysql limit 分页 优化_MYSQL分页limit速度太慢优化方法
  5. 【网络技术】TCP详解
  6. 代码行数统计 通过命令
  7. 作为宇宙的产物,人类应该极具悟性
  8. 视频教程-SharePoint 2019 入门实战教程-企业信息化
  9. 大数据分析案例-基于LightGBM算法构建乳腺癌分类预测模型
  10. 用C语言实现发红包的软件算法