fltk中文手册p.docx

上传人:b****6 文档编号:7010917 上传时间:2023-01-16 格式:DOCX 页数:22 大小:26.29KB
下载 相关 举报
fltk中文手册p.docx_第1页
第1页 / 共22页
fltk中文手册p.docx_第2页
第2页 / 共22页
fltk中文手册p.docx_第3页
第3页 / 共22页
fltk中文手册p.docx_第4页
第4页 / 共22页
fltk中文手册p.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

fltk中文手册p.docx

《fltk中文手册p.docx》由会员分享,可在线阅读,更多相关《fltk中文手册p.docx(22页珍藏版)》请在冰豆网上搜索。

fltk中文手册p.docx

fltk中文手册p

第一章FLTK编程模型

1.1FLTK功能简介

1.2搭建FLTK开发环境

windows下搭建FLTK开发环境

ubuntu下搭建FLTK开发环境

构件简介

事件处理

消息处理

编程

第二章常用的控件和属性

按钮

文本

颜色

Box类型

第三章FLTK的画图函数

何时可以画图

FLTK的画图函数

剪切

颜色

设置线条的属性

画一般的图形函数

画封闭的线,一次连接个顶点

画三边形或四边形,并填充内部

复杂图形函数

字体

覆盖画图函数

第四章在FLTK中自定义控件

定制图形控件说明

如何开发一个控件的子类

处理事件

画控件

第一章:

FLTK编程模型

FLTK(FastLightToolKit发音为fulltick)是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/2000和MacOS操作系统平台,相对于其它的许多图形接口开发工具包(如MFC、GTK、QT等),它具有体积很小、速度比较快,且有着更好的移植性。

FLTK(FastLightToolKit发音为fulltick)是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/2000和MacOS操作系统平台,相对于其它的许多图形接口开发工具包(如MFC、GTK、QT等),它具有体积很小、速度比较快,且有着更好的移植性。

本文就FLTK编程的一些基本方法进行介绍。

功能简介

(1)提供丰富的跨平台的GUI构件(Widget)。

有按钮,菜单,窗口等,近六十个。

(2)支持OpenGL,提供Fl_GL_Window,支持OpenGL相关的操作。

(3)提供界面设计工具FLUID,非常方便进行界面的设计。

(4)良好的跨平台移植性。

(5)支持多种C++编译器,Gcc,BC,VC等等。

(6)灵活性。

FLTK本身可以定制,以满足不同的需要。

这使得FLTK在嵌入式开发上有着极大的竞争力,这正是我要推荐使用FLTK的原因。

本文就FLTK编程的一些基本方法进行介绍.

搭建FLTK开发环境

安装FLTK很简单,我们只需要下载它的源文件,解压缩到目录下,在Linux下我们只需要输入make,编译完成然后makeinstall就头文件安装到/usr/include/FL目录下。

库文件就在/usr/lib下,也可以自己编译之后把这些文件复制到这些目录,或者不需要复制,只在编译连接的时候指定路径。

在window下可以使用VC,BC打开相应目录下的工程文件编译即可。

windows下搭建FLTK开发环境

第一步:

下载FLTK源码包

FLTK官网

下载后解压缩到C盘根目录下,命名为FLTK

进到C:

\FLTK\ide\visualc目录下,找到

用VisualC++打开项目,然后选择【组建】-->全部重建,就开始编译了

编译完成后关闭VisualC++

第二步:

添加FTLK库文件

(1)重新打开VisualC++,新建一个Win32Application项目,命名为FLTK,然后再新建一个文件

(2)建立好之后选择【工程】->【设置】-->选择“连接”选项卡-->“分类”下拉框选择输入,在对象/

库模块添加:

还要在忽略库中添加:

LIBCD

(3)之后选择“C/C++"选项卡,"分类”下拉框选择:

codegeneration,在“userun-timelibrary"中选择”Multi-threadedDLL“最后确定。

(4)选择【工具】-->【选项】--》"目录"选项卡

在”目录“下拉框中选择"IncludeFiles"然后新增一项C:

\FLTK(导入头文件)

(5)在“目录“下拉框中选择"LibraryFiles”然后新增一项C:

\FLTK(导入类库)

(6)编译运行

ubuntu下搭建FLTK开发环境

第一步:

配置基础开发环境GCC

xhy@xhy-desktop:

~$sudoapt-getinstallbuild-essential

第二步:

安装QT开发环境

xhy@xhy-desktop:

~$sudoapt-getinstallqt4-dev-toolsqt4-docqt4-qtconfigqt4-demosqt4-designer

第三步:

下载FLTK源码包

FLTK官网

下载后解压缩:

第四步:

编译安装FLTK

xhy@xhy-desktop:

~$cdFLTK

xhy@xhy-desktop:

~$make

xhy@xhy-desktop:

~$sudomakeinstall

第五步:

测试环境

写一个简单的FLTK程序

#include

#include

#include

intmain(intargc,char**argv)

{

Fl_Window*window=newFl_Window(300,180);

Fl_Box*box=newFl_Box(20,40,260,100,"Hello,World!

");

box->box(FL_UP_BOX);

box->labelsize(36);

box->labelfont(FL_BOLD+FL_ITALIC);

box->labeltype(FL_SHADOW_LABEL);

window->end();

window->show(argc,argv);

returnFl:

:

run();

}

包含了需要的头文件后,该程序创建了一个窗口

Fl_Window*window=newFl_Window(300,180);

还创建了一个box类,标签是“HelloWorld!

Fl_Box*box=newFl_Box(20,40,260,100,"Hello,World!

");

下一步,我们设置了box的类型,大小,字体和标签的类型

box->box(FL_UP_BOX);

box->labelsize(36);

构件简介

FLTK作为GUI开发包,包含了常用的图形用户接口需要的一些构件,视觉表现非常丰富,如下两图所示:

常用按钮构件

按钮名称

头文件

按钮名称

头文件

Fl_Button

Fl_Check_Button

Fl_Light_Button

Fl_Repeat_Button

Fl_Return_Button

Fl_Round_Button

对于具有Fl_Check_Button、Fl_Loght_Button和Fl_Round_Button当状态为off时value()=0,On时value()返回1。

处理按钮时间可以使用回调(callback)函数,参见后面的事件处理。

文本处理构件

构件名称

头文件

构件名称

头文件

Fl_Input

Fl_Output

Fl_Multiline_Input

Fl_Multiline_output

设置和取得文本内容使用value();

如:

(newFl_Input(x,y,width,height,"Label"))->value("HelloWorld!

");

其他构件参见的文档说明。

写一个简单的FLTK程序

#include

#include

#include

intmain(intargc,char**argv)

{

Fl_Window*window=newFl_Window(300,180);

Fl_Box*box=newFl_Box(20,40,260,100,"Hello,World!

");

box->box(FL_UP_BOX);

box->labelsize(36);

box->labelfont(FL_BOLD+FL_ITALIC);

box->labeltype(FL_SHADOW_LABEL);

window->end();

window->show(argc,argv);

returnFl:

:

run();

}

包含了需要的头文件后,该程序创建了一个窗口

Fl_Window*window=newFl_Window(300,180);

还创建了一个box类,标签是“HelloWorld!

Fl_Box*box=newFl_Box(20,40,260,100,"Hello,World!

");

下一步,我们设置了box的类型,大小,字体和标签的类型

box->box(FL_UP_BOX);

box->labelsize(36);

box->labelfont(FL_BOLD+FL_ITALIC);

box->labeltype(FL_SHADOW_LABEL);

最后,我们显示该窗口并进入FLTK事件循环

window->end();

window->show(argc,argv);

returnFl:

:

run();

运行该程序得到的界面如下,你能直接关闭该窗口退出,也可以按ESC键退出

事件处理

对于一般构件的如按钮,菜单等常用事件的处理一般可以使用回调函数实现,回调函数的原型是:

voidXXX_callback(Fl_Widget*w,void*data)

{

含以下头文件

#include

#include

#include

2.定义一个子类,如下代码所示

classMYGLWindow:

publicFl_Gl_Window

{

voiddraw();现draw()事件

voidMYGLWindow:

:

draw()件处理实现

voidMYGLWindow:

:

handle(intevent)编译时需要包含openGL32的库文件,名字在不同的平台名字稍微不同。

2.使用代替头文件,不要使用后者的头文件。

例子程序比较长,附在参考中。

运行显示,弹出菜单后如图所示:

第二章:

常用的控件和属性

这章将描述FLTK提供的控件,并介绍如何得到和设置控件的标准属性。

按钮

FLTK提供了很多类型的按钮

Fl_Button普通按钮

Fl_Check_Button带有选择框的按钮

Fl_Light_Button带有指示灯的按钮

Fl_Repeat_Button

Fl_Return_Button能被Enter激活的按钮

Fl_Round_Button带有圆形选择框的按钮

每一个按钮都需要相应的头文件。

构造函数包含了控件的位置,大小和可选的标签

Fl_Button*button=newFl_Button(x,y,width,height,"label");

Fl_Light_Button*lbutton=newFl_Light_Button(x,y,width,height);

Fl_Round_Button*rbutton=newFl_Round_Button(x,y,width,height,"label");

每一个按钮可以设置自己的类型用type(),通过这个设置,可以让一个按钮为

pushbutton,togglebutton,orradiobutton:

button->type(FL_NORMAL_BUTTON);lbutton->type(FL_TOGGLE_BUTTON);rbutton->type(FL_RADIO_BUTTON);对于toggle和radio按钮,value()函数返回当前的状态,开/关(0代表关,1代表开),set()和clear()分别用来设置和清除togglebutton的状态。

RadioButton可以用setonly()打开,同组中的其他Radiobutton按钮将关闭。

here

文本

FLTK提供了几种文本控件来显示和接收文本信息

Fl_Input输入单行的文本

Fl_Output输出单行的文本

Fl_Multiline_Input多行文本输入框

Fl_Multiline_Output多行文本输出框

Fl_Text_Display显示多行文本控件

Fl_Text_Editor多行文本编辑控件

Fl_Help_View显示HTML文本控件

Fl_OutputandFl_Multiline_Output控件允许互相copy,但是不能改变

Value()函数用来设置和得到显示的字符串

Fl_Input*input=newFl_Input(x,y,width,height,"label");

input->value("Nowisthetimeforallgoodmen...");

这个字符串将被拷贝到该控件的存储空间内,当用value()设置后

Fl_Text_DisplayandFl_Text_Editor用Fl_Text_Buffer来设置他的值,而不是一个简单的字符串。

Valuators

Valuators用来显示数字轨迹信息

Fl_Counter带有箭头按钮的控件显示当前值

Fl_Dial圆形手柄

Fl_Roller

Fl_Scrollbar滚动条控件

Fl_Slider带有手柄的滑块

Fl_Value_Slider显示当前值的滑块

Figure3-2:

FLTKvaluatorwidgets

value()函数得到和设置控件的当前值,minimum()和maximum()设置了控件的范围

群Groups

Fl_Group控件被用来做一般的容器控件。

除了单选按钮群以外,还被用来形成windows,tabs,scrolledwindows等控件。

一下是FLTK提供的群类。

Fl_Double_Window一个双缓冲的窗口

Fl_Gl_Window一个OpenGL的窗口类

Fl_Group容器类的基类。

能被用来包含所有的控件

Fl_Pack将控件收集到一个群区域中

Fl_Scroll滚动窗口区域

Fl_Tabs

Fl_Tile

Fl_Window

设置控件的位置和大小

控件的位置和大小在你创建的时候就已经设置了,你可以通过x(),y(),w(),h(),来得到。

改变大小和位置用position(),resize(),size()函数。

button->position(x,y);

group->resize(x,y,width,height);

window->size(width,height);

颜色

FLTK用一个32位的无符号整形存储颜色。

它可能是256种颜色一个索引,也可能是一个24位的RGB颜色。

调色板不是X或WIN32的colormap,它是有对应固定内容的调色板

以下是一些常用的颜色的符号定义:

FL_BLACK

FL_RED

FL_GREEN

FL_YELLOW

FL_BLUE

FL_MAGENTA

FL_CYAN

FL_WHITE

这些符号是FLTK控件默认的颜色,详细情况请参考Enumerations

FL_FOREGROUND_COLOR

FL_BACKGROUND_COLOR

FL_INACTIVE_COLOR

FL_SELECTION_COLOR

RGB颜色可以用fl_rgb_color()函数设置。

Fl_Colorc=fl_rgb_color(80,170,255);

控件的颜色用color()函数设置

button->color(FL_RED);

类似的,标签的颜色用labelcolor()函数设置

button->labelcolor(FL_WHITE);

类型

Fl_Boxtype的类型在<>中定义,可以用Fl_Widget:

:

box()设置和得到。

FL_NO_BOX意思是任何东西都不要画,但仍然是留在窗口上。

Fl_。

_FRAME类型只是画边框,中间不做任何改变。

如图中蓝色的部分。

制作你自己的Boxtypes

你可以自己制作个性风格的boxtype.通过一个小函数,并将其加到boxtypes的列表中画图函数

画图函数传递的参数控件的是box的边界和背景颜色

voidxyz_draw(intx,inty,intw,inth,Fl_Colorc)

{

}

如一个简单的画图函数填充一个矩形,给定颜色并画一个黑色的外框

voidxyz_draw(intx,inty,intw,inth,Fl_Colorc)

{

fl_color(c);

fl_rectf(x,y,w,h);

fl_color(FL_BLACK);

fl_rect(x,y,w,h);

}

加入自定义的box类型

Fl:

:

set_boxtype函数添加或取代特定的box类型

#defineXYZ_BOXFL_FREE_BOXTYPEFl:

:

set_boxtype(XYZ_BOX,xyz_draw,1,1,2,2);

最后4个参数是偏移量,当画该box时,x,y,w,h会减去相应的偏移量

第三章:

FLTK的画图函数

这章涵盖了FLTK提供的所有画图函数

何时可以画图

什么时候可以画图,只有在几个地方可以执行画图代码。

在其他地方调用该函数会出现未定义该行为的错误:

1.最常出现的地方是在虚拟函数Fl_Widget:

:

draw()中。

你的类需要继承一个Fl_Widget类,然后在自己的类中写draw()函数。

2.在写boxtype和labeltype函数中用到。

3.你可以调用Fl_Window:

:

make_current()来增加控件的更新。

用Fl_Widget:

:

window()找到要更新的窗口

FLTK的画图函数

调用这些画图函数之前,要包含头文件

FLTK提供以下画图函数:

Boxes

Clipping

Colors

Linedashesandthickness

FaseShapes

ComplexShapes

Text

Images

Overlay

Boxes

FLTK提供了三个函数来画box,主要用于画按钮和其他的UI控件。

每一个函数都提供了box的左上角,宽,高等参数。

voidfl_draw_box(Fl_Boxtypeb,intx,inty,intw,inth,Fl_Colorc);

该函数画了一个标准的box,box类行为b,颜色是c

voidfl_frame(constchar*s,intx,inty,intw,inth);

该函数画了一个边框,s是4个字母,A代表黑色,X代表白色,顺序是上,左,下,右。

voidfl_frame2(constchar*s,intx,inty,intw,inth);

与fl_frame不同时s代表的颜色的顺序,分别是下,右,上,左。

剪切

你可以限制你的画图行为在一个矩形之内,应用fl_push_clip(x,y,w,h),释放用fl_pop_clip.

该矩形用象素未单位,不会受变换矩阵的影响

另外,系统会提供更新窗口的剪切域,但是比一个简单的矩形要复杂的多

voidfl_clip(intx,inty,intw,inth)

voidfl_push_clip(intx,inty,intw,inth)

用一个矩形剪切一个区域,并把这个区域压入堆栈。

Fl_clip()不提倡,并将在以后的版本中去除该函数

voidfl_push_no_clip()

压入一个空的剪切域到堆栈

voidfl_pop_clip()

恢复剪切域,画图范围不再受矩形限制,fl_push_clip()一定要调用该函数。

intfl_clip_box(intx,inty,intw,inth,int&X,int&Y,int&W,int&H)

新的剪切域与旧的剪切域相交,相交的矩形位置保存在X,Y,W,H,如果完全没有相交,则W,H为0;

颜色

FLTK将颜色处理为32位的整形。

0-255分别代表不同的颜色。

Fl_color枚举类型定义了前256个基本的颜色。

颜色值大于255的被认为是24位的RGB值。

显示的是最接近该值的颜色。

voidfl_color(Fl_Color)设置当前使用的颜色

Fl_Colorfl_color()返回最后设定的颜色

voidfl_color(ucharr,ucharg,ucharb)设置rgb颜色。

设置线条的属性

FLTK支持设定线条的宽度和类型。

voidfl_line_style(intstyle,intwidth=0,char*dashes=0)

style是以下几种类型之一,默认的是FL_SOLID。

FL_SOLID-------

FL_DASH----

FL_DOT.......

FL_DASHDOT-.-.

FL_DASHDOTDOT-..-

FL_CAP_FLAT

FL_CAP_ROUND

FL_CAP_SQUARE(extendspastendpoint1/2linewidth)

FL_JOIN_MITER(pointed)

FL_JOIN_ROUND

FL_JOIN_BEVEL(flat)

宽度是以象素值为单位,默认的0

画一般的图形函数

下面的函数几乎可以用来画所有的控件,这些函数画图非常精确,也非常快。

他们可以在任何支持FLTK的平台上使用。

Voidfl_point(intx,inty)画点函数

Voidfl_rectf(intx,inty,intw,inth)画一个矩形并填充内部

Voidfl_rectf(intx,inty,intw,inth,ucharr,ucharg,ucharb)自定义颜色填充矩形

Voidfl_line(intx,inty,intx1,inty1)画一条直线,起点为x,y,终点为x1,y1

Voidfl_line(intxinty,intx1,inty1,intx2,inty2)画两条直线

voidfl_loop(intx,inty,intx1,inty1,intx2,inty2)

voidfl_loop(intx,inty,intx1,inty1,intx2,inty2,intx3,inty3)

Outlinea3or4-sidedpolygonwith

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1