FLTK中的字体

article/2025/9/1 12:20:23

FLTK中的字体

    • 字体在FLTK中的表示
    • 获取系统的字体编号表
    • 程序示例

字体在FLTK中的表示

在FLTK中,系统中的每一种字体都对应着一个整数类型(严格来讲是Fl_Font类型,但Fl_Font本身就是int的别名)的字体编号。例如,在本人的系统中“楷体”所对应的字体编号为618。

在创建控件后,可以通过labelfont(int)方法来设施其所显示的字体。例如,下列代码创建了一个字体为楷体的Fl_Box对象:

Fl_Box pBox = new Fl_Box(0, 0, 200, 30, "这是楷体");
pBox->labelfont(618);

获取系统的字体编号表

FLTK用字体编号表(Face table)来存储系统中的字体编号和字体名称的对应关系。

在FLTK中可以通过以下步骤来获取字体编号表中的内容:

  1. 更新字体编号表
    可以通过Fl::set_fonts静态方法(注意这里fonts中有s)来让FLTK搜寻系统中的字体并储存到字体编号表中。其函数原型如下,其中xstarname是一个字符数组,用来描述要添加的字体集 。传递空指针表示选取ISO8859-1编码的字体,而传递-*表示选取所有字体(WIN平台)。一般建议参数选-*,具体说明可以参考官方文档。
Fl_Font Fl::set_fonts(const char* xstarname=0);
  1. 获取字体编号
    可以通过Fl::get_font_name静态方法来获取对应字体编号的字体名称。其输入是字体编号,返回值是字体名称。其函数原型如下,其中参数fnum是一个整型,代表字体编号,返回值是一个字符数组,代表字体的名称。另一个参数attributes的用来表明所对应字体类别,分别是0-普通,1-粗体,2-斜体,3-斜黑体。具体说明可以参考官方文档。
const char* Fl::get_font_name(Fl_Font fnum,	 int* attributes=0);

获取系统的字体编号表的示例代码如下:

int type;								/* 用来存放得到字体的类型 */
int font_number = Fl::set_fonts("-*");	/* 获取系统中字体的数目 */
for(int i=0; i<font_number; i++){		/* 找到名字为楷体的字体编号 */if(!strcmp(Fl::get_font_name(i), "楷体")){std::cout << "字体编号: " << i << "字体名称: " << Fl::get_font_name((Fl_Font)i, &type) << std::endl;}
}

程序示例

下面是一个创建窗口并用不同字体显示的示例程序:

#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
#include <cstring>
#include <vector>
#include <iostream>int main(){char s[] = "问君能有几多愁,恰似1群Tj上青楼~";	/* 演示文本 */std::vector<int> vecInt;					/* 保存字体编号 */std::vector<Fl_Box*> vecBox;				/* 保存控件的指针 */int type;									/* 用来存放得到字体的类型 */int font_numbers = Fl::set_fonts("-*");		/* 获取系统中的字体数目 *//* 打印前10种字体以及楷体的字体编号和字体名称并保存 */ for (int i=0; i<font_numbers; i++){if (i<10){std::cout << "字体编号: " << i << ", 字体名称: " << Fl::get_font_name((Fl_Font)i, &type);std::cout << ", 字体类型: " << ((type==0)?("普通"):((type==1)?("黑体"):((type==2)?("斜体"):((type==3)?("黑斜"):("未知"))))) << std::endl;vecInt.push_back(i);}else if (!strcmp(Fl::get_font_name((Fl_Font)i,nullptr), "楷体")){std::cout << "字体编号: " << i << ", 字体名称: " << Fl::get_font_name((Fl_Font)i,&type);std::cout << ", 字体类型: " << ((type==0)?("普通"):((type==1)?("黑体"):((type==2)?("斜体"):((type==3)?("黑斜"):("未知"))))) << std::endl;vecInt.push_back(i);vecInt.push_back(i);}}Fl_Double_Window* pMainWindow = new Fl_Double_Window(300, 400, "字体测试");for (size_t i=0; i<vecInt.size(); i++){vecBox.push_back(new Fl_Box(0, i*30, 300, 30, s));vecBox[i]->labelfont(vecInt[i]);}pMainWindow->end();pMainWindow->show();return Fl::run();
}

这里注意在编译的时候记得加上-lfltk命令(在MSYS2上还要加上-mwindows -DWIN32 -lole32 -luuid -lcomctl32)。

其在命令行界面得到的结果如下:

字体编号: 0, 字体名称: Arial, 字体类型: 普通
字体编号: 1, 字体名称: Arial bold, 字体类型: 黑体
字体编号: 2, 字体名称: Arial italic, 字体类型: 斜体
字体编号: 3, 字体名称: Arial bold italic, 字体类型: 黑斜
字体编号: 4, 字体名称: Courier New, 字体类型: 普通
字体编号: 5, 字体名称: Courier New bold, 字体类型: 黑体
字体编号: 6, 字体名称: Courier New italic, 字体类型: 斜体
字体编号: 7, 字体名称: Courier New bold italic, 字体类型: 黑斜
字体编号: 8, 字体名称: Times New Roman, 字体类型: 普通
字体编号: 9, 字体名称: Times New Roman bold, 字体类型: 黑体
字体编号: 618, 字体名称: 楷体, 字体类型: 普通

创建的窗口如下:
字体测试相关链接
专栏:FLTK


http://chatgpt.dhexx.cn/article/Ra95NX4Z.shtml

相关文章

FLTK学习笔记4-在FLTK中显示图片(上)

FLTK学习笔记4-在FLTK中显示图片&#xff08;上&#xff09; Fl_JPEG_Image和Fl_PNG_ImageFl_Shared_Image程序示例 在FLTK中&#xff0c;并不是任何时候都可以绘图的&#xff08;当然也包括绘制图片&#xff09;&#xff0c;一般来讲我们只能在控件类中的 draw()方法中绘制所…

C++轻量级跨平台桌面GUI库FLTK的简单使用

C的跨平台桌面GUI库有很多&#xff0c;大体上分成两种流派&#xff1a;retained mode和immediate mode。 其中前者是主流的桌面GUI机制框架&#xff0c;包括&#xff1a;Qt、wxwidgets、gtk、juce等后者是一些游戏引擎编辑器常用的GUI机制框架&#xff0c;包括&#xff1a;img…

开源跨平台GUI库Fltk在Deepin Linux下的使用

开源跨平台GUI库Fltk在Deepin Linux下的使用 前言一、下载安装二、样例使用三、自编代码四、后记 前言 在互联网应用漫天的现在&#xff0c;实体企业、工厂却绕不开大量的桌面应用&#xff0c;开发工具有恐龙C#&#xff0c;有难用的MFC&#xff0c;也有没落的Delphi&#xff0…

Ubuntu安装FLTK详细过程

1.官网下载源码压缩包。版本建议最新&#xff0c;我这里的版本是1.3.8 2. 终端输入&#xff1a;sudo apt-get install build-essential xorg-dev libx11-dev libcairo2-dev //此步骤必要&#xff01;&#xff01;&#xff01;安装依赖库&#xff0c;不然后面安装总会出错&#…

[Rust GUI]fltk-rs的helloworld

1、安装VSCode 下载安装VSCode 安装VSCode扩展 rust-analyzer或rust-analyzer(CN) 2、安装Microsoft C 生成工具 访问微软官网下载生成工具&#xff0c;勾选使用 C 的桌面开发之后会自动勾选5个项目 取消勾选以下项目 用于 Windows 的 C CMake 工具 测试工具核心功能 - 生成…

使用CLion配置第一个FLTK界面

文章目录 写在前面安装与配置安装helloworld配置命令行配置CLion 运行结果 写在前面 假期抽时间学习一下跨平台GUI界面的开发, 正好也当做C的练手小项目了. C标准库中没有对于GUI的支持, 需要依赖三方库, 这里我先想到的是老牌跨平台GUI——Qt, 但是作为一个小项目感觉使用Qt有…

FLTK-Rs 2

Trees 树形结构&#xff0c;允许在树中显示项目&#xff0c;使用add方法发添加条目 use fltk::{prelude::*, *}; use fltk::enums::FrameType;fn main() {let a celet mut win window::Window::default().with_size(400, 300);let mut tree tree::Tree::new(5,5,390,290,&…

FLTK的UI设计工具FLUID使用方法总结

tags: FLTK C GUI 写在前面 终于又捡起来FLTK了, 先来看看怎么通过FLUID创建一个图形界面并完成回调函数的创建, 参考的是官方教程中关于创建一个CubeView程序的例子, 教程里面很多都与最新版本的FLTK界面不太一致, 但是通过我的摸索还是找出了方法. 下面来分享一下. 创建类…

fltk和glog在mac下的安装与编译

glog 根据官方文档安装即可 https://github.com/google/glog % git clone https://github.com/google/glog.git % cd glog % cmake -S . -B build -G "Unix Makefiles" //这句含义未知 % cmake --build build安装完后可以去/usr/local目录下查看是否有对应的头文件…

c语言fltk图形库,FLTK编程模型

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

FLTK-Rs

终于还是到这一步了&#xff0c;可视化&#xff0c;我的超人&#xff01; FLTK是一个跨平台的轻量级 gui 库。该库本身是用 C98 编写的&#xff0c;具有很高的可移植性。fltk crate 是用 Rust 编写的&#xff0c;并使用 FFI 调用 FLTK 包装器cfltk&#xff0c;它是用 C89 和 C…

Visual Studio 安装 FLTK

Visual Studio 安装 FLTK 环境介绍 Windows 10Visual Studio Community 2019 (2021-11-29补充2022版)FLTK-1.3.7 下载与解压 ​ 进入FLTK官网-Download下载最新版本。 ​ 解压到D:\Program Files\fltk(解压路径任意都行)&#xff0c;推荐使用Bandzip免费解压工具。 编译 …

FLTK--轻量级C++跨平台GUI库

FLTK FLTK&#xff08;Fast Light Toolkit&#xff09;是一个跨平台的CGUI工具集&#xff0c;用在UNIX/Linux&#xff08;X11&#xff09;、微软Windows和Mac OS X上。FLTK提供现代的GUI功能&#xff0c;除却膨胀&#xff0c;通过OpenGL和内建的GLUT模拟器提供3D图形支持。最初…

浅谈如何fltk项目编译和实现显示中文

目录 一、编译 二、中文显示如何处理&#xff1a; 2.1在发文2天前突然发现&#xff0c;我这个界面显示英文出现问题了&#xff0c;开始我的搜索之旅&#xff0c;一些参考页面有碰到问题也可以看看&#xff1a; 2.2、 那就开始翻翻官方自带的例程吧&#xff0c;看看他如何显…

FLTK 学习一:简介和安装

文章目录 FLTK 简介FLTK 安装FLTK Windows安装FLTK Linux 安装 FLTK 简单示例参考资料 FLTK 简介 从网上引用的一段 FLTK 的介绍 FLTK (Fast Light Tool Kit 发音为fulltick) 是一种使用 C 开发的 GUI 工具包&#xff0c;它可以应用于 Unix, Linux, MS-Windows95/98/NT/2000 和…

安装使用FLTK图形库

FLTK是Fast Light Toolkit的简称&#xff0c;是一个跨平台的C GUI包&#xff0c;FLTK提供xiandai GUI功能&#xff0c;而且通过OpenGL支持3D图像。 下载FLTK安转包fltk-1.3.4-1-source.tar.gz&#xff1a; http://www.fltk.org/software.php?VERSION1.3.4&FILEfltk/1.3.…

BOBCAT: 基于双层优化的计算机化自适应测验(超硬核解读论文+阅读论文技巧)

文章目录 前言AbstractIntroductionCAT 介绍传统的认知诊断模型传统的CAT选题策略传统方法局限性 ContributionsBOBCAT框架双层优化问题BOBCAT框架BOBCAT 训练过程 OptimizationExperiments能力评估问题暴露和内容重叠问题选择 Conclusions 前言 大家好&#xff0c;我是小曾&a…

项目管理理论与实践(3)——如何进行有效的项目管理

对于具有成功并有效的项目管理经验的项目经理&#xff0c;还是非常难得的。因为项目管理并不是一件很简单的事情。虽然自己对于项目管理的理解还是处于初级阶段&#xff0c;但是利用自己学习到的理论知识&#xff0c;还是想做一次归纳&#xff0c;希望对大家能够受用。那么就开…

计算机自适应考试技巧,计算机自适应题库实现

在软件的开发中,基于题库的计算机自适应考试已成为一个重要的发展方向,而计算机自适应题库的建立就显得尤为重要。计算机自适应测验(Computerized Adaptive Testing,简称CAT)是近年来发展起来的一种新的测验形式。这种测验以项目反应理论为基础,以计算机技术为手段,在题库…

项目经理都会面临什么问题?

最近手里一个项目接近尾声&#xff0c;还有一个项目正在初期调研&#xff0c;无缝衔接&#xff0c;原定结项之后的3天假期也泡汤了&#xff0c;每一个环节都出问题我真的会心累&#xff0c;再加上最近组里人事变动&#xff0c;也没有及时做好复盘&#xff0c;客户又出现了临时需…