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、显示灰色字体

效果图
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相关推荐

  1. 【Dear imgui】ImGui输入框在Android中的解决方案

    Dear ImGui本身是一个十分强大的GUI解决方案,但是目前为止,作者的回复仍然是DearImGui主要还是为PC进行服务,但是由于DearImGui本身使用底层图形API进行绘制,所以其跨平台性 ...

  2. 【我的渲染技术进阶之旅】关于C++轻量级界面开发框架Dear ImGui介绍

    文章目录 一.怎么知道ImGui的 1.1 Filament中有使用ImGui 1.2 其他很多渲染框架都有使用ImGui 二.ImGui介绍 2.1 ImGui风格 2.2 Imgui介绍 2.2. ...

  3. Unity全新UI系统dear imgui

    前言 有没有人跟我有过同样的想法,觉得Unity的imgui相当繁琐,每次想写点编辑器扩展都得自己写一大堆的东西,本来就一直在网上找找有没有一些造好的轮子可以使用,可惜没有找到.后面在找到dear i ...

  4. Dear ImGui中文文档(一)

    2020年12月11日10:21:48 官方:https://github.com/ocornut/imgui Dear ImGui 官方网站 https://www.dearimgui.org/ ( ...

  5. UGUI自定义组件之Image根据Text大小自动调整

    文章目录[点击展开](?)[+] 需求分析 在之前的文章中,介绍到可以使用UGUI自带的ContentSizeFitter组件,进行Button根据Text的长度自适应, UGUI ContentSi ...

  6. [UE4] 使用 GUI 框架“Dear ImGui”

    创建C++版本项目,这里以项目名称 MyDemo为例. 你可以从这里获得UE下ImGui的源代码. https://github.com/segross/UnrealImGui 在项目所在的文件夹中创 ...

  7. [UE4] 使用 GUI 框架“Dear ImGui” 示例:ImguiLogWindow

    要想从引擎那得到日志数据可以继承自 public FOutputDevice . 其中一个重要的虚方法 virtual void Serialize(const TCHAR* V, ELogVerbo ...

  8. 第 1-8 课:基础组件详解(Text、Image、Button)

    前面已经讲解了大量的 Flutter 相关基础知识,从这节课开始,我们将进行 Flutter 的系列 Widget.布局的学习.那么这节课就带领大家对 Flutter 的基础 Widget 中的几个典 ...

  9. uni-app中text文本组件的基本使用

    text文本组件的用法 001 - text 组件的属性 属性 类型 默认值 必填 说明 selectable boolean false 否 文本是否可选 space string . 否 显示连续 ...

最新文章

  1. (转载)(官网)UE4--Character
  2. SAP SD基础知识之维护中央信贷主数据
  3. 【数学建模】模拟退火算法(最优化)
  4. git 使用详解(3)—— 最基本命令 + .gitignore 文件
  5. socket通信简单介绍
  6. 基于mykernel完成多进程的简单内核
  7. 【渝粤教育】广东开放大学 会议运行管理 形成性考核 (38)
  8. Docker 安装(使用阿里源)
  9. iframe是什么?iframe用法详解
  10. 我所佩服的古人——乐毅
  11. 曾经我们无话不说,如今却渐渐形同陌路
  12. SSL证书错误了怎么办?
  13. 十一青岛2人4日自助游记
  14. vueJs写一个分页
  15. R语言参数检验多重比较
  16. 2021数字四川创新大赛盛夏再起航
  17. STM32 FreeRTOS (三) 软件定时器
  18. Python中 list[:]与 list 的区别
  19. c语言中static作用
  20. Direct Sparse Odometry (一)初始化过程中的光度误差优化

热门文章

  1. 计算机管理怎么给硬盘重新合区,一分钟学会磁盘合区,妈妈再也不用担心!
  2. Java中利用Calendar类得到每月对应的天数
  3. 零基础如何上手APICloud App、小程序多端开发
  4. 【图灵图书】杀入“黄榜”,你最中意的书可在其中?
  5. 软件内每日提醒功能,可整合到工程中
  6. 利用Python的turtle画一个奥运五环
  7. Maya 查看关节点的绝对坐标和导出蒙皮权重
  8. org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxxx.phb.mappe
  9. 【记】一年之计在于春
  10. pdf转换成txt转换器有哪些