当前位置:   article > 正文

ImGui基本方法

imgui

目录

创建窗口

Begin函数

设置字体 

checkbox函数

Button函数

ImGui::SliderInt、ImGui::SliderFloat函数

SetCursorPos函数

style设置样式

Login基本要素

计算大小的函数


创建窗口

包含文件(以Opengl3为例):

  1. #include "imgui.h"
  2. #include "backends/imgui_impl_glfw.h"
  3. #include "backends/imgui_impl_opengl3.h"

ImGui::Begin()创建窗口,窗口展开则返回true:

  1. if (ImGui::Begin("Test"))
  2. {
  3. ImGui::Text("Aa");
  4. }ImGui::End();

  

设置窗口大小,若调用没有Next的函数,则后面的窗口都会以这个大小创建,ImVec2:

  1. ImGui::SetNextWindowSize(ImVec2(500, 500));//ImVec2(x, y)
  2. //ImGui::SetWindowSize(ImVec2(500, 500));
  3. if (ImGui::Begin("Test"))
  4. {
  5. }ImGui::End();

Begin函数

bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)

name:设置名称 ;
p_open:用于设置是否在右上角有关闭按钮 ,当按下按钮时,p_open为false;ImGuiWindowFlags:设置窗口属性,如_NoResize禁用改变大小,NoCollapse禁用折叠:

ImGui::Begin("Test"),NULL,ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse)

设置字体 

加载字体的函数:

ImFont* ImFontAtlas::AddFontFromFileTTF(const char* filename, float size_pixels, const ImFontConfig* font_cfg_template, const ImWchar* glyph_ranges)

输入中文需要使用glyph_ranges参数:

  1. //默认
  2. io.Fonts->AddFontDefault();
  3. //加载字体
  4. ImFont* mainfont = io.Fonts->AddFontFromFileTTF("path.ttf", 18.f,NULL, io.Fonts->GetGlyphRangesChineseSimplifiedCommon());
  5. ImGui::PushFont(mainfont);
  6. //.....此处内容为mainfont字体
  7. ImGui::PopFont();
  1. io.Fonts->AddFontFromFileTTF("path/path0/font.ttf", 18.0f);
  2. io.Fonts->AddFontFromFileTTF("path/path1/font.ttf", 18.0f);
  3. io.FontDefault = io.Fonts->Fonts[0];

 checkbox函数

bool ImGui::Checkbox(const char* label, bool* v)

label:标签
v:是否勾选

  1. bool testbool = false;//在渲染循环外
  2. ImGui::SetNextWindowSize(ImVec2(500, 500));
  3. if (ImGui::Begin("Test"),NULL)
  4. {
  5. ImGui::Checkbox("check1", &testbool);
  6. }ImGui::End();

Button函数

bool ImGui::Button(const char* label, const ImVec2& size_arg)

label:标签;
size_args:按钮大小

点击后返回true:

  1. if (ImGui::Button("Click me!"))
  2. {
  3. ...//点击后执行的任务
  4. }

ImGui::SliderInt、ImGui::SliderFloat函数

bool ImGui::SliderInt(const char* label, int* v, int v_min, int v_max, const char* format, ImGuiSliderFlags flags)

v:绑定的变量;
v_min、v_max:最小、最大值;

  1. if (ImGui::Begin("Test"), NULL)
  2. {
  3. ImGui::SliderInt("Number Int", &initI, 1, 20);
  4. ImGui::SliderFloat("Number Float", &initF, 0, 10);
  5. }ImGui::End();

 

SetCursorPos函数

void ImGui::SetCursorPos(const ImVec2& local_pos)

用于设置目标位置,起始点为左上角:

  1. ImGui::Begin("Test");
  2. ImGui::SetCursorPos(ImVec2(50, 50));
  3. ImGui::Button("Test1", ImVec2(50, 50));
  4. ImGui::SetCursorPos(ImVec2(100, 100));
  5. ImGui::Button("Test2", ImVec2(50, 50));
  6. ImGui::End();

RadioButton

bool ImGui::RadioButton(const char* label, int* v, int v_button)

const char* label:名字
int* v:赋值的对象
int v_button:选择对应按钮时的赋值

示例:

目录

创建窗口

Begin函数

设置字体 

 checkbox函数

Button函数

ImGui::SliderInt、ImGui::SliderFloat函数

SetCursorPos函数

RadioButton

 style设置样式

Login基本要素

计算大小的函数


  1. static int model = 1;
  2. ImGui::RadioButton("MCF-STGCN", &model, 0);
  3. ImGui::SameLine();
  4. ImGui::RadioButton("DSSTGCN", &model, 1);

 

style设置样式

  1. ImGuiStyle& style = ImGui::GetStyle();
  2. style.WindowRounding = 0.0f;
  3. style.Colors[ImGuiCol_WindowBg] = ImVec4(0.8, 1.0, 0.2, 1.0);

  

style变量有许多属性,可以设置各种样式的外观,https://github.com/ocornut/imgui/issues/707网站有各种样式的参数可以参考。

Login基本要素

  1. char Input_username;
  2. char Input_password;
  3. std::string username = "AAA";
  4. std::string password = "1234";
  5. //上方为全局变量
  6. ImGui::Begin("Test");
  7. ImGui::Text("UserName:");
  8. ImGui::InputText("##Input_username", &Input_username, MAXCHAR);
  9. ImGui::Text("PassWord:");
  10. ImGui::InputText("##Input_password", &Input_password, MAXCHAR, ImGuiInputTextFlags_Password);
  11. if (ImGui::Button("Login"))
  12. {
  13. if (&Input_username == username && &Input_password == password)
  14. {
  15. //...
  16. }
  17. }
  18. ImGui::End();

计算大小的函数

ImVec2 ImGui::CalcTextSize(const char* text, const char* text_end, bool hide_text_after_double_hash, float wrap_width)
float ImGui::CalcItemWidth()
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/744996
推荐阅读
相关标签
  

闽ICP备14008679号