【Dear Imgui】组件的使用之Text
1、Text的使用
int idHello = 0;
ImGui::Text("idHello = %d", idHello);
Tip::Text使用的参数和C语言的printf里面的参数格式一致,里面写什么,显示的就是什么
2、Text显示有颜色的字体:
ImGui::TextColored(ImVec4(1.0f, 0.0f, 1.0f, 1.0f), "idHello = %d", idHello);
3、使Text支持中文字符输入输出
当我们不设置自己的字符集的时候,默认是不能显示汉字的,如果不设置自己的字符集,直接显示汉字,那么就只会显示:“?”
此时相当于我们使用了接口:
io.Fonts->AddFontDefault();
所以当我们使用汉字显示的时候,就需要设置自己的字符集:从网上下载包含汉字的.ttf文件,然后通过接口进行设置
ImGuiIO& io = ImGui::GetIO(); (void)io;
ImFont* font = io.Fonts->AddFontFromFileTTF("AaDouBanErTi-2.ttf", 15.0f, NULL, io.Fonts->GetGlyphRangesChineseFull());
这里面最后一个参数是设置加载的多少,当前用的是加载所有汉字,还有就会可以加载常用的汉字,但是可能会比较少,两个接口如下:
io.Fonts->GetGlyphRangesChineseSimplifiedCommon(); // 这个是只加载常用汉字,是参考的维基百科上的2500个汉字,但是现在的常用汉字是3500个,所以少了1000个
io.Fonts->GetGlyphRangesChineseFull(); // 这个是加载字体中所有的汉字
注意:传进来的字符必须是unicode格式,可以直接在字符串前面加u8就可以了
ImGui::Text(u8"你好");
以上接口出自:https://www.joven.top/archives/192
其实github上提供的例子里面也提供了很多加载的文件以及默认的方式吗,就在main.cpp里面:
//io.Fonts->AddFontDefault();
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Roboto-Medium.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/Cousine-Regular.ttf", 15.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/DroidSans.ttf", 16.0f);
//io.Fonts->AddFontFromFileTTF("../../misc/fonts/ProggyTiny.ttf", 10.0f);
4、显示灰色字体
![](/assets/blank.gif)
ImGui::TextDisabled(u8"应用简介");
5、当鼠标悬停的时候,显示二级内容
char* desc = u8"这是一个工具类软件";
ImGui::TextDisabled(u8"应用简介");
if (ImGui::IsItemHovered())
{// 显示工具的提示ImGui::BeginTooltip();// 使得文字的区域可以自己控制, 但是这里我感觉更推荐使用:TextWrapped接口,之后的部分有提到他们的区别ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);ImGui::TextUnformatted(desc);ImGui::PopTextWrapPos();// 结束工具提示ImGui::EndTooltip();
}
6、如何加载多种字体
比如:显示字符串1的时候,使用字体1,显示字符串2的时候,使用字体2
但是需要注意:
①imgui不能动态的加载字体,所以需要提前加载完成,然后使用PushFont和PopFont的接口进行转换
②当我们加载了多种字体,但是没有使用PushFont和PopFont进行设置的时候,使用的是我们第一个加载的字体
ImFont* font1 = io.Fonts->AddFontFromFileTTF("AaDouBanErTi-2.ttf", 20.0f, NULL, io.Fonts->GetGlyphRangesChineseFull());
ImFont* font2 = io.Fonts->AddFontFromFileTTF("ZhanKuWenYiTi-2.ttf", 20.0f, NULL, io.Fonts->GetGlyphRangesChineseFull());
ImFont* font3 = io.Fonts->AddFontFromFileTTF("WuXia.ttf", 20.0f, NULL, io.Fonts->GetGlyphRangesChineseFull());
ImFont* defaultFont = io.Fonts->AddFontDefault();
......
// 使用不同的字体
ImGui::Text(u8"第一种字体");
ImGui::PushFont(font3);
ImGui::Text(u8"使用Font3武侠风格字体");
ImGui::PopFont();
7、每一行的字数随着窗口大小的改变而改变
ImGui::TextWrapped(u8"当前的字体会随着窗口大小的变换,而进行每一行字数的调整");
8、每一行的字数,可以根据自己的情况进行改变,但是不随窗口的大小改变
这里我们使用了一个滑块组件来控制文字区域的大小,可以使得文字的区域随着滑块的数组进行变化,但是不随着窗口的变化进行变化
static float zoom = 50.0f;
ImGui::SliderFloat(u8"滑动以改变文字区域大小", &zoom, -20, 200, "%.3f");
ImVec2 pos = ImGui::GetCursorScreenPos();
ImGui::PushTextWrapPos(pos.x + zoom);
ImGui::Text("this is a second, it is was used for check the rightable of PushTextWrapPos");
ImGui::PopTextWrapPos();
【Dear Imgui】组件的使用之Text相关推荐
- 【Dear imgui】ImGui输入框在Android中的解决方案
Dear ImGui本身是一个十分强大的GUI解决方案,但是目前为止,作者的回复仍然是DearImGui主要还是为PC进行服务,但是由于DearImGui本身使用底层图形API进行绘制,所以其跨平台性 ...
- 【我的渲染技术进阶之旅】关于C++轻量级界面开发框架Dear ImGui介绍
文章目录 一.怎么知道ImGui的 1.1 Filament中有使用ImGui 1.2 其他很多渲染框架都有使用ImGui 二.ImGui介绍 2.1 ImGui风格 2.2 Imgui介绍 2.2. ...
- Unity全新UI系统dear imgui
前言 有没有人跟我有过同样的想法,觉得Unity的imgui相当繁琐,每次想写点编辑器扩展都得自己写一大堆的东西,本来就一直在网上找找有没有一些造好的轮子可以使用,可惜没有找到.后面在找到dear i ...
- Dear ImGui中文文档(一)
2020年12月11日10:21:48 官方:https://github.com/ocornut/imgui Dear ImGui 官方网站 https://www.dearimgui.org/ ( ...
- UGUI自定义组件之Image根据Text大小自动调整
文章目录[点击展开](?)[+] 需求分析 在之前的文章中,介绍到可以使用UGUI自带的ContentSizeFitter组件,进行Button根据Text的长度自适应, UGUI ContentSi ...
- [UE4] 使用 GUI 框架“Dear ImGui”
创建C++版本项目,这里以项目名称 MyDemo为例. 你可以从这里获得UE下ImGui的源代码. https://github.com/segross/UnrealImGui 在项目所在的文件夹中创 ...
- [UE4] 使用 GUI 框架“Dear ImGui” 示例:ImguiLogWindow
要想从引擎那得到日志数据可以继承自 public FOutputDevice . 其中一个重要的虚方法 virtual void Serialize(const TCHAR* V, ELogVerbo ...
- 第 1-8 课:基础组件详解(Text、Image、Button)
前面已经讲解了大量的 Flutter 相关基础知识,从这节课开始,我们将进行 Flutter 的系列 Widget.布局的学习.那么这节课就带领大家对 Flutter 的基础 Widget 中的几个典 ...
- uni-app中text文本组件的基本使用
text文本组件的用法 001 - text 组件的属性 属性 类型 默认值 必填 说明 selectable boolean false 否 文本是否可选 space string . 否 显示连续 ...
最新文章
- (转载)(官网)UE4--Character
- SAP SD基础知识之维护中央信贷主数据
- 【数学建模】模拟退火算法(最优化)
- git 使用详解(3)—— 最基本命令 + .gitignore 文件
- socket通信简单介绍
- 基于mykernel完成多进程的简单内核
- 【渝粤教育】广东开放大学 会议运行管理 形成性考核 (38)
- Docker 安装(使用阿里源)
- iframe是什么?iframe用法详解
- 我所佩服的古人——乐毅
- 曾经我们无话不说,如今却渐渐形同陌路
- SSL证书错误了怎么办?
- 十一青岛2人4日自助游记
- vueJs写一个分页
- R语言参数检验多重比较
- 2021数字四川创新大赛盛夏再起航
- STM32 FreeRTOS (三) 软件定时器
- Python中 list[:]与 list 的区别
- c语言中static作用
- Direct Sparse Odometry (一)初始化过程中的光度误差优化
热门文章
- 计算机管理怎么给硬盘重新合区,一分钟学会磁盘合区,妈妈再也不用担心!
- Java中利用Calendar类得到每月对应的天数
- 零基础如何上手APICloud App、小程序多端开发
- 【图灵图书】杀入“黄榜”,你最中意的书可在其中?
- 软件内每日提醒功能,可整合到工程中
- 利用Python的turtle画一个奥运五环
- Maya 查看关节点的绝对坐标和导出蒙皮权重
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxxx.phb.mappe
- 【记】一年之计在于春
- pdf转换成txt转换器有哪些