文档库 最新最全的文档下载
当前位置:文档库 › (整理)UI按钮设计方法论.

(整理)UI按钮设计方法论.

(整理)UI按钮设计方法论.
(整理)UI按钮设计方法论.

UI按钮设计方法论(一)

作为一篇关于设计经验分享的博文,我只有靠自己浅薄的经验写出自己个人的看法,关于界面视觉设计,要分类的话能分得很细,所以能写的就很多,所以我打算先从局部来谈谈我总结的一些设计方法。

经常有同学问我一些关于按钮设计的问题,怎么样做些漂亮又特别的按钮,我常常会告诉他们怎么画按钮的技法。但是我觉得一个设计师的成长都离不开自己对设计方法的总结。画按钮的技法在网上能找到很多,但是很少有人讲按钮设计的方法论,所以今天我把自己总结的按钮设计的方法和大家一起分享。(既然是按钮设计的方法分享,所以我在画案例的时候略显粗糙了,还请大家多多包含)

一个漂亮的按钮,我们要看他的表现方式、形态、质感是否符合整个界面所要传达的整体风格是值得每一个设计师去重视的。随着网络媒体的发展。各行各业都在网络媒体上来展示自己,也相继出现了许多行业界面,那么这些界面的设计风格肯定不会千篇一律,那么涉及到的按钮设计也是各有风格的。

“艺术来源于模仿”,“设计来源于生活”。这两句话对我在学设计的时候起到很大的作用,我在画按钮的时候主要从生活中发现自己需要的元素。下面我就举例来谈谈我的方法。

首先,我们知道按钮在效果表现上很大一部分我们是从质感的表现上来识别的,比如我们最常见VISTA风格的按钮就是从玻璃质感上变现。大家可以看我找的玻璃瓶素材,很明显就能看出玻璃瓶的高光、反光和投影。我们在变现按钮质感的时候也多是从这三方面出发。

这里我做了一个实例分析

玻璃瓶素材

A按钮我是完全按照玻璃瓶质感的方式来画的;

B按钮是我经过我对光规律的观察而总结出的自己想要表现方式的一种艺术处理。主要是为了说明我们在进行参照质感进行按钮设计的时候要考虑自己需要的艺术效果进行适当的艺术处理。这样也便于界面制作人员的制作。

下面一种是我们经常所见的苹果风格的按钮设计,这种风格的按钮也是我们在生活中经常能见到的,键盘手机就经常采用这种设计方式,但是随着触摸屏手持设备的普遍,绝大数的键盘界面都采用模仿原来手机实物键盘的设计方式,这样是为了让用户对界面产生亲切感,同时这样的设计也看起来更加简洁美观。

键盘素材

C按钮是我参照键盘的质感做的样稿,

D按钮是我选择了同一色相不同明度和纯度所做的按钮,之所以列举这个列子,是为了说明我们在做这种风格的按钮设计的时候,一定要把握住一个很重要的问题,那就是一定是在同一种色相中拉渐变,这样的按钮效果才自然,当然除了设计师追求一些不一样的效果。

从这张色谱,大家可以看出色相的微妙关系。有利于我们做渐变类型的按钮。

E按钮就是我采用的45度角径向渐变的按钮,是为了说明渐变方式不同最后按钮的最后出现的效果也会不同,就这一点我们设计师可以设计出很多不同形式的按钮。

其它的我会根据我生活中的观察来和大家分享一些生活中的按钮设计,如图所示这个按钮设计是我仿常见的复印机上面的按钮来设计的,这种按钮的设计方法也很简单,但是效果很好。同时也加强了用户对界面的亲切感,更加有利于用户的使用。如下图:

下面这个按钮是我们常见的开关按钮,我只是按照开关的样式,粗糙的画了一个实例,为的就是说明其实在做按钮设计的时候我们参考的实物是很多的,多观察周围的实物往往会得到一些意想不到的收获,并且我们还可以通过简单的艺术效果处理得到不同的按钮效果。如下图:

我觉得界面设计师在做界面设计的时候应该多观察生活中看到的物品,这些都能给界面设计师很大的启发。这篇博文希望得到抛砖引玉的作用,希望大家多多发表自己在做按钮设计的时候总结的方法论。希望和大家一起共同成长!

UI按钮设计方法论(二)

上一节我写了在生活中找到按钮设计的元素,这一节中我也会延续生活中的设计这个观点,这一节写的是按钮在界面中运用设计,那么我们怎么从生活中来找到灵感呢,一直觉得做设计就是做原色的统一和对比,无论是平面、UI界面、数码、环境空间、服装等,一切设计概莫能外。有对比就会有统一,对比统一是设计师最容易也是最难拿捏的部分。这些往往都是设计师在自己的工作和学习中总结的属于自己的学习方法。

那么下来我就说说我在界面设计中按钮设计的运用方法和大家一起分享、一起学习、一起进步。

色彩统一

首先我想起自己最早学设计的时候,总是找不到设计的感觉,心里一直在捣鼓究竟问题出在哪儿了,后面在学习的过程中才发觉我一直在对比和统一中来摸索着学设计。后面的设计之路也一直在这上面纠结,慢慢的后面自己发现了最简单的一种方法。就是同色系的统一,所以在做一个设计的时候只选定几种色后,就在这几种色彩中选择使用,来完成一幅相对完整的作品。色彩是最容易让人识别的,视觉识别系统也成为一个企业、集体和产品很重视的部分。那么在界面设计中,我在按钮设计的使用上,首先也是根据整个网站的整体色调来考虑按钮的色彩,这样做的优势在于整个界面的统一性,也是用得最多的一种按钮设计方法。如图:

质感统一

界面设计不同于普通平面设计的一个很重要的地方就是设计师要对界面质感的把握,那么这样我们对界面中按钮设计的运用要就有一定的要求,首先一点就是整个界面的质感统一,不论是图标或按钮。这一点是最基本的要求。如图:

色彩对比

在设计中做统一是一种比较简单而且很有效果的一种方法,但是缺点就是很难在视觉上给用户有一种新鲜感,所以好多设计师会在设计对比上思考许久,因为这样达到的效果是能给人眼前一亮的感觉。前面我写了设计中的统一,有统一必然会有对比,所以接下来我谈谈我对与按钮设计运用的对比方法。这些方法我们在生活中都能找到相关的设计元素。

说起色彩对比那又将是一篇长篇大论,所以在这里我也只是根据按钮设计中的问题点到为止。我们知道色彩最重要的属性之一就是它的冷暖性,所以冷暖对比是在设计中运用最多的,但是如果再把色彩对比划分的话还有明度对比,纯度对比,补色对比,冷暖对比,面积对比,黑白灰对比,同时对比,空间效果和空间混何等的对比。

曾经看过一步电影《向左走向右走》里面的一个场景让我印象深刻,如图所示,在这个场景中我深深的被场景中的色彩对比锁吸引,这个场景对我以后在做设计的时候强调主次起了很大的启发作用。如图:

然而被称之为经典的界面设计就是苹果的计算机工具界面设计,这是典型的来源与生活中的按钮设计。其方法和《向左走向右走》里面的这个场景一样。这样的按钮设计直接给用户指出了重要的部分,能更加帮助用户的使用。如图:

质感对比

在生活中不同质感组合表现一样的物品也很多,但是给我印象最深的就是下面这款笔记本,它是采用木质和金属质感以及塑料质感的对比而成,整个设计简洁大气不失美观。如图:

作为界面设计中被设计师很看重的界面质感设计。在进行按钮设计上考虑最多的质感的搭配,现在来说说质感对比,往往我们看界面设计时按钮都会有几种状态,那么怎么来设计这几种状态能让按钮有新的亮点,这值得每个界面设计师的考虑。在这里思考的质感就会有很多种对比,没有好坏之分,关键看设计师做这种对比想给用户一种什么感觉。如图:

后面我谈到的这种方法也是我个人的思考点,至于在界面设计中怎么运用,值得每个设计师的思考,大家都知道过马路,当一群人从走往右走的时候,对面一个人走过来·这样的的动态是不是很特别呢,是不是有个醒目的感觉。我曾经看过一个服装广告设计就

是这样设计的,动态的对比是界面的发展正朝着运动的模式发展,所以我们在按钮设计的运用上可以考虑按钮的动态对比的运用将会是怎么样的。

最后我们无论是在界面设计中做统一或对比,我们都要在整个产品的整体性基础之上来考虑,这样才能保证产品的完整性。同时我们在设计界面的时候千万记住界面的细节表现,因为在界面设计中载体大小的限制,我们应该把握好每一个像素的运用,这样做出来的界面才会工整美观。

GTK图形界面编程-计算器的实现

目录 一.课程设计目的 (2) 二.课程设计任务与要求 (2) 三.功能分析 (3) 四.功能模块分析与设计 (3) 1.图形界面设计 (4) 2.按键处理模块 (4) 3.数字键处理模块 (5) 4.小数点处理模块 (6) 5.加减乘除运算按键处理模块 (6) 6.结果按键,即等号处理模块 (7)

7.清除模块 (8) 五.功能测试 (9) 六.课程设计总结 (10) 高级C语言实训报告 一.课程设计目的 现在大多数的计算器都具备+,-,*,/等四则运算的功能。用计算器来算数显然比用脑袋或用纸笔计算要来得方便。当我们看到一个很长很大的表达式需要得到结果时,我们就会想到计算器,这样,本程序就是为解决大家基本四则运算的问题而产生的。主要基于对表达式的分析并利用C进行编程进而实现算法的。C在程序运行效率、内存使用的可控性和编程的灵活性上均具有较大的优势,与汇编语言和C语言更具有面向对象的优点,我采用Ubuntu Linux操作系统以及GTK+2.0,以达到算法快速有效地执行。 二.课程设计任务与要求 1.使用C语言和GTK+图形库进行开发,计算器可以在装有GTK+运行环境的各种操作系统上运行;

2.实现标准型计算器上的四则运算功能(参考Windows 7系统标准型计算器); 3.根据课程设计进度对程序功能进行扩展: 添加捕捉键盘事件功能,通过PC键盘的数字键盘也可以进行输入; 为计算器添加存储功能(MR、M+、M-等按键功能),实现完整的标准型计算器; 4.实现科学型计算器上的四则运算功能(参考Windows 7系统科学型计算器或Ubuntu 系统基本型计算器)。 本课程设计内容是在Linux平台下开发一个简单的计算器程序,采用GCC编程工具和GTK+2.0工具包等软件为开发工具以及C语言知识实现图形化的计算器程序。该程序能够实现的对整数的加减乘除和小数的加减乘除。 三.功能分析 1.整数之间的加减乘除运算 2.小数之间的加减乘除运算 3.小数与整数之间的加减乘除运算 四.功能模块分析与设计 本计算器主要是完成整数之间、小数之间、整数和小数之间的加减乘除的运算,使用GTK+完成界面布局。 根据需求分析的结果,总体结构如下图所示:

c语言课程设计GTK+计算器的实现

目录 设计背景 (2) GTK+简介 (2) 程序实现 (3) 界面的构建 (3) 窗口的实现 (3) 按钮的实现 (4) 输入框的实现 (5) 回调函数的实现 (5) 数字键 (6) 小数点 (6) 运算符 (7) 等号 (7) 清除键 (8) 退格键 (8) 键盘事件 (8) 心得体会 (10) 参考文献 (10)

设计背景 GTK+简介 GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。 GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。 GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。 Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。 Glib还定义了一些方便的常量: #define FALSE 0 #define TRUE !FALSE 这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。 ●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C 语言数据类型的简单代替 ●gpointer与(void *)同义 ●gboolean 用于表示布尔类型的值,它事对int的一个包装 ●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有 符合和无符号类型 尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。为了方便起见,所有构件创建函数都返回一个GtkWidget类型。

一步一步学GTK+之多窗口

一、按照一定的逻辑去切割代码并实现多窗口 上一篇中完成了一个简单的软件界面,考虑到这个软件主要的目的是在软件中容纳很多控件,一个窗口中不可能全部包含进去的。所以这篇内容是我们一起来学下多窗口。既然我们要实现多窗口,那么就不能把所有代码放到一个文件中,这样会很混乱的,一个文件来放一个窗口,然后用main.c的入口文件来调度它们。使用我先把文件的结构分为: main.c——入口文件 window_main.c——主窗口文件 window_test.c——测试用的子窗口文件 common_func.c——各个窗口调用的公共函数文件 既然涉及到公共函数会被其他窗口调用,我们还需要建立一些头文件,在其中加入一些宏来防止重复包含文件。 common_func.h #ifndef __COMMON_FUNC_H__ #define__COMMON_FUNC_H__ #include GdkPixbuf *create_pixbuf(const gchar * filename); void toggle_display(GtkWidget *widget, gpointer oneofwidget); #endif// __COMMON_FUNC_H__ common.c #include "common_func.h" /* @Description: 从一个图片中获取信息得到pixbuf @param: gchar filename */ GdkPixbuf *create_pixbuf(const gchar * filename) { GdkPixbuf *pixbuf; GError *error = NULL; /* * 函数gdk_pixbuf_new_from_file() 从一个图片文件中加载图象数据,从而生成一个新的pixbuf, * 至于文件中包含图象的格式,是由系统自动检测的。如果该函数返回值是NULL 的话,程序就会出现错误。 */ pixbuf = gdk_pixbuf_new_from_file(filename, &error); if(!pixbuf) {

LINUX下GTK+实现简单计算器

摘要 随着计算机的越来越普及,学习计算机的人越来越多。作为一个学习计算机的人员,最基本的那就是必须会编程。但是在微软垄断下的现在的计算机编程大多是基于windows下的编程。设置很多人没听说过或者不会Linux下编程。本设计的目的就是为初学Linux下编程的人员提供基础的例子。让大家了解Linux下的编程。 本程序运用Linux下的工具GTK+2.0作为工具,以C语言为核心编写。简单易懂,GTK+2.0主要功能有: ●窗口与简单控件的实现 ●菜单与工具栏的实现 ●常用控件的实现 ●对话框的实现 …… 关键词:Linux GTK+2.0 Abstract As computers become increasingly popular, more and more people learn the computer. As a learning computer personnel, the most basic that we must be programmed. However, under the Microsoft monopoly in computer programming is now mostly under the windows-based programming. Set a lot of people never heard of or will not, under Linux programming. The purpose of this design is for beginners programming under Linux provides the basis of examples. Let everyone know the programming under Linux. ●Window and a simple realization of the control ●Realization of the menu and tool bar ●The realization of common control ●Realization of the dialog box …… KEYWORDS:Linux GTK+2.0

基于Linux的GTK+图形界面编程——扫雷游戏设计

基于Linux的GTK+图形界面编程——扫雷游戏设计 摘要 本篇课程设计主要说明使用Linux下的GTK+2.0库开发一个简单的扫雷程序,建立一个图片矩阵,由于图片控件不能接收事件,必须将它们放到事件盒中,才能接收到事件。这样就能处理鼠标事件以及鼠标事件对应的图片显示处理,并对用户的操作做出提示。最后可以完成基本的扫雷任务,由于本人能力有限,无法设计自定义的游戏级别,只能使用规定了的游戏级别。 关键词:linux;扫雷;GTK+;游戏

GUI PROGRAMMING BASE ON GTK+ —— MINESWEEPER GAME DESIGN ABSTRACT This course design mainly describe how to develop a minesweeper game by GTK+ library in Linux. First I create a matrix of picture, I must put they on event box for widget of picture can’t receive event. When users click on the picture, the program can deal with display of pictures and display some tips. This program can manage operator of minesweeper. But due to the limit of my ability, users can’t define the level of the game, they can only use defined level. Key words: linux; minesweeper; GTK+; Game

gtk+-安装步骤

Redhat 9.0 上安装gtk+-2.12.0的心得体会 一、首先介绍下个gtk包: 1.1什么是GTK+? GTK+是一个小型而高效的控件库,具有Motif的外观和风格.实际上,它比Motif看起来好多了,它包含有基本的控件和一些很复杂的的控件:例如文件选择控件和颜色选择控件.GTK+提供了一些独特的特性,(至少,我知道其他的控件库不提供他们),例如,按钮不提供标签,它包含了一个子控件,在很多的时候是一个标签,但是,这个子控件也可以是一个映射,图像或者任何其他的程序员想要的集合.在整个的库中,你随处可见这种伸缩性. 1.2. GTK+中的+是什么意思? GTK+中的+是什么意思?Peter Mattis的邮件这样表述: 我原来编写的gtk包含以下的三个库:libglib, libgdk and libgtk.它是一种平行的控件层次,你不能够从一个已存在的控件中得到一个新的控件,新版的gtk+包含一个比信号机制更加标准的回调机制,+用来区别原来的版本和新的版本,你可以把它看作一个加入了面向对象特性的旧版的加强版. 1.3. GTK+, GDK和GLib中的G代表什么? GTK+, GDK和GLib中的G代表什么? GTK+ == Gimp Toolkit GDK == GTK+ Drawing Kit GLib == G Library 1.4. 那里可以找到GTK+的文档? 那里可以找到GTK+的文档? 在GTK+发布版本的doc/文件夹下面, 你可以找到GTK 和GDK的参考资料,本FAQ和GTK指南.另外,你可以通过下面的网址找到这个文件HTML版本https://www.wendangku.net/doc/0f12955205.html,/,打包的gtk指南,SGML, HTML, Postscript, DVI或text 的版本可以在下面找到 ftp://https://www.wendangku.net/doc/0f12955205.html,/pub/gtk/tutorial 1.5运行GTK+需要安装什么 运行GTK+需要安装什么编译GTK+,你只需要一个c编译器(gcc),一个X window系统和相关的库文件. 1.6 那里可以得到GTK+ 那里可以得到GTK+ 官方网站ftp://https://www.wendangku.net/doc/0f12955205.html,/pub/gtk. 一般新的GTK+版本发布的时候,这个网站都很拥挤,所以你可以试试下面列表中的镜像网站. ftp://https://www.wendangku.net/doc/0f12955205.html,/etc/mirrors 下面有一些镜像网站: ?非洲- ftp://ftp.is.co.za/applications/gimp ?澳大利亚- ftp://https://www.wendangku.net/doc/0f12955205.html,/pub/gimp ?芬兰- ftp://ftp.funet.fi/pub/sci/graphics/packages/gimp ?德国- ftp://infosoc.uni-koeln.de/pub/https://www.wendangku.net/doc/0f12955205.html, ?日本- ftp://SunSITE.sut.ac.jp/pub/archives/packages/gimp ?英国- ftp://https://www.wendangku.net/doc/0f12955205.html,/pub/X/gimp ?美国- ftp://https://www.wendangku.net/doc/0f12955205.html,/pub/mirrors/https://www.wendangku.net/doc/0f12955205.html,

gtk简易教程

大家一起用gtk编程1(开始与热身) 转贴请注明出处:https://www.wendangku.net/doc/0f12955205.html, 作者:lvjinhua@https://www.wendangku.net/doc/0f12955205.html, 2006.09.20 ?写在最前面 笔者写做本文的目的,主要是为初学GTK编程的新手们提供一个能够快速上手的学习档案,能够通过自己将所有的代码输入并编译,以达到学习的目的。同时,也希望它成为一个参考手册,希望GTK中的每一个API都能在本文中找到相应的示例。 笔者将尽力保证所有的代码都是最短小的,这样才能保证大家都有足够的动力去手工输入它。 由于笔者时间及精力有限,不能一次将所有内容呈现给所有读者,因此拟定了一个计划:每天更新一个章节的内容,在笔者的Blog上进行连载,同时会不断地对以前的内容进行修改和完善,因此为了保证大家能够读到最新的内容,请随时关注笔者的Blog:https://www.wendangku.net/doc/0f12955205.html, 起笔的日子:2006.09.20 ?为什么是GTK? 为什么不是GTK?笔者不想花费太多的口水去辨证为什么选择GTK而不是其它的东西;任何技术都没有好坏之分,只有使用它的人有能力的强弱之别;笔者认为比较明智的做法是:多编些程序,少做些争论。 ?1、GTK简介 GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何费用来购买许可证和使用权。当前,GTK已经被成功地应用到了大量的自由软件及商业软件中,已经取得了很大的成功。 GTK 的创建者: Peter Mattis: petm@https://www.wendangku.net/doc/0f12955205.html, Spencer Kimball: spencer@https://www.wendangku.net/doc/0f12955205.html, Josh MacDonald: jmacd@https://www.wendangku.net/doc/0f12955205.html, 当前,GTK主要由几大组件构成: *Gtk+:GTK的主要构件,包括所有的图形控件及大量实用的API。 *Glib:包含一些标准函数的替代函数,以及一些处理链表等数 据结构的函数等。这些替代函数被用来增强GTK 的可移植性,

linux下C语言设计GTK

设计背景 GTK+简介 GTK+一开始是作为流行的GNU图像处理程序GIMP的一部分产生的,逐渐成为功能强大最受欢迎的工具包之一,因为变成了一个独立的项目。它是一个函数库,提供了一组已经制作好的被称为构件的组件,可以通过简单易懂的函数调用把这些组件和应用程序逻辑组合在一起,从而极大的简化了GUI的创建。 GTK+使用自由的LGPL许可证,它完全是用C语言编写的,绝大多数GTK也是用C语言编写的,也有许多语言绑定可以在C++,Python,PHP,Java中使用它。 GTK本身是建立在一组其它函数库上的,例如他需要Glib提供底层数据结构、类型、线程支持、事件循环和动态加载。 Glib和GObject提供了一组数据类型、函数和宏的标准替代集来进行内存管理和处理常见任务,从而实现跨平台开发,意味着GTK+能够可靠的移植到其他平台和体系结构上。 Glib还定义了一些方便的常量: #define FALSE 0 #define TRUE !FALSE 这些附加的数据类型基本上是标准C语言数据类型的代替,以及用于确保跨平台字节长度不变。 ●gint、guint、gchar、guchar、glong、gulong、gfloat和gdouble是标准C 语言数据类型的简单代替 ●gpointer与(void *)同义 ●gboolean 用于表示布尔类型的值,它事对int的一个包装 ●gint8、guint8、gint16、guint16、gint32和guint32是保证字节长度的有 符合和无符号类型 尽管GTK+是完全用C语言编写的,但是它通过GObjiect库支持对象和面向对象编程,这个库通过宏来支持对象继承和多态。为了方便起见,所有构件创建函数都返回一个GtkWidget类型。 程序实现 要实现本次课程设计要求,首先考虑的是将图形界面和回调函数分开来实现,图形界面通过窗口、按钮、盒、文本框等GTK+构件即可实现,而回调函数应该分

GTK主题创作指南

GTK主题创作指南 author: Tim Orford date: Jan 06作者: Tim Orford日期: Jan 06 Contents内容 introduction简介 general widget properties一般部件性能 gtkrc files gtkrc文件 widget examples小工具的例子 fonts字体 key bindings键绑定 engines发动机 icons图标 cursors游标 further reading进一步阅读 introduction:简介: Gtk programmers will tell you that writing a gtk theme is easy. gtk的程序员会告诉你,写一个GTK主题是容易的。 If you have a full understanding of how gtk is put together, then that may be so, but if you dont have an intimate knowledge of the gtk api and you want to change the visual appearance of your gtk apps then this document may hopefully save you some swearing while you go through the process of trial and error trying to figure out what works and what doesnt.如果你有一个这么全面了解了GTK 是放在一起,那么这可能,但如果你没有一个熟悉的GTK的API的,你要改变你的GTK应用程序外观特征那么这个文件可能希望为您节省一些脏话,而你经过审讯过程中的错误,并试图找出什么可行,什么doesn't。 Its not difficult stuff, but can appear to be somewhat random and non-intuitive due to its close correlation with the underlying widget structure.它的东西并不难,但可以显得有些随机和非直观的部件,由于其结构与基础密切相关。 This document applies only to Gtk2, although Gtk1.2 themes are quite similar.本文件仅适用于与gtk2,虽然Gtk1.2主题非常相似。 Warning: this document is incomplete. The https://www.wendangku.net/doc/0f12955205.html, tutorial may be useful.警告:本文件是不完整的。https://www.wendangku.net/doc/0f12955205.html,教程可能是有用的。 theme browsing主题浏览

使用GTK+库实现一个扫雷程序

使用GTK+库实现一个扫雷程序 目录 目录 (1) 1 最基本的GTK+程序 (2) 2 事件处理与界面布局 (6) 3 扫雷程序 (10)

1 最基本的GTK+程序 1.1 GTK库的主要功能 GTK+,这个库实现的功能有, 1 图形显示 (Display) 2 事件处理 (Event) 1.2 GTK库的基本要素 GTK+的主要函数和数据结构包括以下三个部分: 1 控制流程(Control Flow) 2 控件管理(Manage Widget) 3 事件处理(Dispose Event) 1.3 一个最基本的GTK+程序 现在以一个简单的程序进行说明:

代码:simple.c ---------------------------------------- 01 #include 02 03 int main(int argc, char**argv) 04 { 05 GtkWidget *window; 06 GtkWidget *label; 07 gtk_init(&argc, &argv); 08 window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 09 g_signal_connect(G_OBJECT(window), "delete_event", 10 gtk_main_quit, NULL); 11 label=gtk_label_new("GTK+"); 12 gtk_container_add(GTK_CONTAINER(window), label); 13 gtk_widget_show_all(window); 14 gtk_main(); 15 return 0; 16 } ---------------------------------------- 对代码进行简单说明:

gtk做个按钮界面

gtk做个按钮界面 #include #include #include #include Display* disp ; FakeKey *fk; static char *keyboard_display[] = { "A/0", "B/0", "C/0", "D/0", "E/0", "F/0", "G/0" }; static gushort keyboard_send[] = { XK_A, XK_B, XK_C, XK_D, XK_E, XK_F, XK_G }; void da_call (GtkDialog *dialog, gint response_id, gpointer user_data) { if (GTK_RESPONSE_OK == response_id) g_print("OK_Pressed"); else if (GTK_RESPONSE_CANCEL == response_id) g_print("CANCEL_Pressed"); } gboolean bt_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data) { gint i = GPOINTER_TO_UINT(user_data); fakekey_press_keysym(fk, keyboard_send[i], 0); fakekey_release(fk); return TRUE; } void clicked_callback(GtkButton *button, GtkWindow *window) {

Gtk 分栏列表框

G t k C L i s t (分栏列表构件)是G t k L i s t (列表构件)的替代品,但它提供更多的特性。分栏列表构件是多列列表构件,它有能力处理数千行的信息。每一列都可以有一个标题,而且可以是活动的。你还可以将函数绑定到列选择上。 -------------------------------------------------------------------------------- 创建分栏列表构件GtkCList 创建G t k C l i s t构件的方法和创建其他构件的方法是类似的。有两种方法,一种是容易的,一种是难的。因为G t k C L i s t可以有多列,因而在创建它之前,必须确定要创建的列表的列数。 GtkWidget *gtk_clist_new ( gint columns ); GtkWidget *gtk_clist_new_with_titles( gint columns,gchar *titles[] ); 第一种方式很简单,而第二种需要作一些解释。每一列都可以有一个与之相联系的标题,标题可以是一个标签构件,或者是一个按钮,只要能够对我们的动作作出响应。如果要使用第二种方式,则必须提供一个指向标题文本的指针,指针数目应该与列数相等。当然,我们可以用第一种方式,然后再手工添加标题以达到相同的目的。 注意,分栏列表构件没有自己的滚动条,如果要提供滚动条功能,应该将分栏列表构件放在一个滚动窗口构件中。 -------------------------------------------------------------------------------- 操作模式 有几个可以用于改变分栏列表构件行为的属性。先看下面这个: void gtk_clist_set_selection_mode( GtkCList *clist,GtkSelectionMode mode ); 就像函数名所暗示的一样,它设置了分栏列表的选择模式。第一个参数是要设置的分栏列表构件,第二个参数是单元的选择模式(取值在g t k e n u m s . h中有定义)。目前,有下面这些模式可以使用: ? G T K _ S E L E C T I O N _ S I N G L E:选定内容为N U L L,或包含一个指向单个被选中项目的G l i s t指针。 ? G T K _ S E L E C T I O N _ B R O W S E:如果G t k C L i s t中不包含构件,或只包含不敏感的构件, 则选定内容为N U L L。否则,它包含一个指向G L i s t结构的G L i s t指针,因而包含一个列表项。 ? G T K _ S E L E C T I O N _ M U LT I P L E:如果没有列表项被选中,选定内容为NULL ;或者选定内容是一个指向第一个被选中列表项的指针。然后依次指向G L i s t结构中第二个被选中的列表项,等等。对G t k C L i s t来说这是缺省模式。 ? GTK_SELECTION_EXTENDED:选中内容总是N U L L。 在G T K今后的版本中可能会增加其他模式。 还可以定义分栏列表构件的边框。使用以下函数完成定义:

GTK学习个人笔记

推荐https://www.wendangku.net/doc/0f12955205.html, 可是目前GTK+的stable版式 2.18 ,unstable版是2.19.3 哪里跑出来的2.8和2.4呀。原来↓:

GtkWidget* gtk_button_new_from_stock (const gchar *stock_id) 从一个"常备项目/固化词条/glib提供的固有原料"(stock item),创建一个GtkButton包含图像和文本. 一些stock ids具有预处理宏,例如GTK_STOCK_OK和GTK_STOCK_APPLY. 如果遇到不识别的stock_id, 那么他们将被视为mnemonic label (参见gtk_button_new_with_mnemonic()). stock_id :the name of the stock item Returns:a new GtkButton gtk_button_new () GtkWidget* gtk_button_new (void) 创建一个新的GtkButton构件(widget). 用gtk_container_add()为button构件添加一个子构件。 Returns :The newly created GtkButton widget. gtk_box_pack_start () void gtk_box_pack_start (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding) 为BOX添加child, 从box的起点开始装入child. 这个child被装入后,其他的任何child装入时都将从起点装入child。(从左向右,从上到下) box :一个GtkBox child :被添加到box中的GtkWidget expand : TRUE if the new child is to be given extra space allocated to box. The extra space will be divided evenly between all children of box that use this option fill : TRUE if space given to child by the expand option is actually allocated to child, rather than just padding it. 如果expand 被设为FLASE的时候,这个属性将无效. A child is allocated the full height of a GtkHBox and the full width of a GtkVBox. This option affects the other dimension padding : extra space in pixels to put between this child and its neighbors, over and above the global amount specified by "spacing" property. If child is a widget at o reference ends of box, then padding pixels are also put between child and the reference edge of box ---------------------------- gtk_box_pack_end () void gtk_box_pack_end (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding) 为BOX添加child, 从box的尾部(end)开始装入child. 这个child被装入后,其他的任何child装入时都将从尾部(end)装入child。(从右向左,从下到上) 其他同上记gtk_box_pack_start()。 expand / fill / padding 参数的动作,基本如下图

相关文档