当前位置: 首页 > news >正文

FTXUI::Screen 模块

FTXUI::Screen

ftxui::Screen 是整个框架的基础所有的布局与 UI 元素都是在其基础上构建的.
它代表了一块屏幕, 你在这个屏幕上所编写的所有布局与组件最终都会被其渲染到终端上.

Example

#include <ftxui/screen/screen.hpp>  // 屏幕
#include <ftxui/screen/color.hpp>   // 颜色void main() {ftxui::Screen Screen = ftxui::Screen::Create(ftxui::Dimension::Full(),   // 宽度占满终端窗口ftxui::Dimension::Fixed(10) // 高度固定10个字符);// 设置变量的值为终端的 (10, 5) 位置上auto& Pixel = Screen.PixelAt(10, 5);// 设置一个字符 XPixel.character = U'X';// 设置字符的前景颜色和背景颜色Pixel.foreground_color = ftxui::Color::Red;Pixel.background_color = ftxui::Color::RGB(0, 255, 0);Pixel.bold = true;  // 设置让这个字符加粗Screen.Print();     // 打印 Pixel 到终端
}

如果坐标超出边界 则会返回虚拟像素
注意 Screen 的单位是字符而不是像素

Screen 有两种显示方式

  1. 你可以使用 Screen.Print(); 进行打印显示
  2. 也可以将其转换成字符串进行输出显示 std::cout << Screen.ToString();

FTXUI::Dimension

ftxui::Dimension 在 FTXUI 中是用来控制组件或者屏幕尺寸的一个结构体
就是上段代码中用来控制字符占据终端宽高的一个功能, Dimension 共有三个函数可以使用

  • Dimension::Full() 占满整个终端
  • Dimension::Fit(element) 根据内容自动适配大小
  • Dimension::Fixed(n) 固定占据多少字符

这些函数需要在 ftxui::Screen::Create() 中设置

ftxui::Screen Screen screen = ftxui::Screen::Create(ftxui::Dimension::Full(),      // 宽度: 占满ftxui::Dimension::Fixed(10)    // 高度: 固定
);

ftxui::Screen::Create 提供了两种重载

  • ftxui::Screen::Create(尺寸) 宽高相同
  • ftxui::Screen::Create(宽度, 高度) 分别设置

渲染最终效果

ftxui::Render(Screen, element);
Screen.Print();

ftxui::Pixel

在 FTXUI 中屏幕是由多个 Pixel 组成的二维网格, 每个 Pixel 就代表了一个字符的单元格.
这些单元格包含了 字符 前景颜色 背景颜色 闪烁效果 字符加粗······

// 设置宽高为 5 字符的屏幕
ftxui::Screen Screen = ftxui::Screen::Create(ftxui::Dimension::Fixed(5),ftxui::Dimension::Fixed(5),
);
// 获取坐标在 3.3 的像素
auto& pixel = Screen.PixelAt(3, 3);
// 设置这个区域显示的字符和颜色
pixel.character = U'X';
pixel.bold = true;
pixel.foreground_color = ftxui::Color::Red;
pixel.background_color = ftxui::Color::RGB(0, 255, 0);
// 打印输出
Screen.Print();
样式字段效果说明
character显示的宽字符
foreground_color前景颜色
background_color背景颜色
bold加粗
dim变暗(低亮度)
italic斜体(部分终端支持)
underlined下划线
underlined_double双下划线
blink闪烁(可能被终端禁用)
inverted反色(前景与背景互换)
strikethrough删除线

PixelAt(x, y) 会执行边界检查并返回指定坐标处像素的引用。如果超出边界,则返回一个虚拟像素引用
{: .prompt-info }

ftxui::Color

ftxui::Color 是用来设置终端文本的前景颜色和背景颜色的核心类, 它有三种颜色设置方案: 预定颜色 256模式 RGB模式

设置终端默认颜色: ftxui::Color::Default
设置系统预定颜色: ftxui::Color::Black
设置256颜色: ftxui::Color::DarkViolet 这里的 DarkViolet 是官方文档中的色码
设置RGB颜色: ftxui::Color::RGB(255, 128, 64)

官方预定颜色查看 这里有官方预定的大部分颜色表

http://www.xdnf.cn/news/785935.html

相关文章:

  • 《Effective Python》第六章 推导式和生成器——总结(基于智能物流仓储监控系统的数据处理)
  • 1. 引言
  • 《DeepSeek使用指南》开源知识库正式上线啦!
  • Spring AI开发跃迁指南(第二章:精进之道1——花样玩转LLM对话记忆功能)
  • 小巧实用,Windows文件夹着色软件推荐
  • OD 算法题 B卷【矩阵稀疏扫描】
  • 【知识点】openai请求参数如何转为大模型的字符串?
  • 如何将 iOS 性能调试融入日常开发流程?构建“默认监控机制”的实战经验(含 KeyMob 工具搭配)
  • 【高等数学】(1)映射
  • 二分查找的边界艺术:LeetCode 34 题深度解析
  • WebFuture:启动服务提示Job webfuture.service/start failed with result ‘dependency‘处理办法
  • 大模型 提示模板 设计
  • 动态规划(2)
  • 从测试角度看待CI/CD,敏捷开发
  • 基于YOLO-NAS-Pose的无人机象群姿态估计:群体行为分析的突破
  • YOLO训练及数据采集注意事项
  • 压缩格式未知或数据损坏:如何应对压缩包无法打开的情况
  • 用PyTorch从零开始编写DeepSeek-V2
  • 情趣私域运营:打造高效转化的私域营销体系
  • C++11特性:enum class(强枚举类型)详解
  • leetcode hot100刷题日记——36.最长连续序列
  • 金属膜电阻和碳膜电阻
  • 在 Vite 中如何处理静态资源
  • 飞算 JavaAI 赋能老项目重构:破旧立新的高效利器
  • 使用Redis的四个常见问题及其解决方案
  • redis的哨兵模式和Redis cluster
  • 5分钟申请edu邮箱【方案本周有效】
  • 基于springboot的图书管理系统的设计与实现
  • 无人机论文感想
  • 邢台山峰特种橡胶制品有限公司专题报道