ImGUI

ImGUI
凝雨文档说明
- ImGui库是一个强大的C++GUI开源库,可用于开发多种可视化程序
窗口
创建窗口
- 源码声明
1 | bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags) //创建窗口 |
1 | void ImGui::End() //结束 |
- name 窗口名
- p_open 布尔指针,控制窗口显示
- ImGuiWindowFlags 标志
ImGuiWindowFlags
| Flag | 窗口没有特殊行为或外观。 |
|---|---|
| ImGuiWindowFlags_None | 窗口没有特殊行为或外观。 |
| ImGuiWindowFlags_NoTitleBar | 窗口没有标题栏。 |
| ImGuiWindowFlags_NoResize | 禁用窗口的调整大小功能。 |
| ImGuiWindowFlags_NoScrollbar | 隐藏水平和/或垂直滚动条。 |
| ImGuiWindowFlags_NoCollapse | 窗口不能通过双击其标题栏或按钮来折叠/展开。 |
| ImGuiWindowFlags_AlwaysAutoResize | 窗口总是自动调整大小以适应其内容。 |
| ImGuiWindowFlags_NoBringToFrontOnFocus | 当窗口获得焦点时,不将其带到其他窗口前面。 |
| ImGuiWindowFlags_NoMove | 禁用窗口的移动功能。 |
| ImGuiWindowFlags_NoBackground | 窗口没有背景色(仅显示内容,没有边框或背景)。 |
| ImGuiWindowFlags_NoSavedSettings | 不保存窗口的位置、大小或折叠状态到用户配置中。 |
| ImGuiWindowFlags_MenuBar | 在窗口的顶部有一个菜单栏。 |
| ImGuiWindowFlags_HorizontalScrollbar | 始终显示水平滚动条(即使内容不需要滚动)。 |
| ImGuiWindowFlags_NoFocusOnAppearing | 当窗口首次出现时,不给予它焦点。 |
| ImGuiWindowFlags_NoNavInputs | 窗口不接收导航输入(如键盘上的箭头键或 Tab 键)。 |
常用API
| 实现 | 声明 | 详细 |
|---|---|---|
| 文本 | ImGui::Text(const char* fmt) |
1.fmt文本 |
| 显示带有标签的文本 | ImGui::LabelText(const char* label, const char* fmt, ...) |
|
| 按钮 | ImGui::Button(const char* label, const ImVec2& size_arg) |
1.lable:文本2. size_arg :大小 |
| 创建一个文本输入框 | ImGui::InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = NULL, void* user_data = NULL) |
|
| 创建一个浮点数滑动条 | ImGui::SliderFloat(const char* label, float* v, float v_min, float v_max, const char* format = "%.3f", ImGuiSliderFlags flags = 0) |
|
| 建一个整数滑动条 | ImGui::SliderInt(const char* label, int* v, int v_min, int v_max, const char* format = "%d", ImGuiSliderFlags flags = 0) |
|
| 创建一个复选框 | ImGui::Checkbox(const char* label, bool* v) |
|
创建一个单选按钮(通常与ImGui::RadioButton的连续调用结合使用,以创建单选按钮组) |
ImGui::RadioButton(const char* label, bool active) |
|
| 创建一个列表框 | ImGui::ListBox(const char* label, int* current_item, const char* const* items, int items_count, int height_in_items = -1) |
|
| 创建一个RGB颜色选择器 | ImGui::ColorEdit3(const char* label, float col[3], ImGuiColorEditFlags flags = 0) |
|
| 创建一个树节点 | ImGui::TreeNode(const char* label) |
|
| 创建一个进度条 | ImGui::ProgressBar(float fraction, const ImVec2& size_arg = ImVec2(-1,0), const char* overlay = NULL) |
|
| 创建一个线图 | ImGui::PlotLines(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = NULL, float scale_min = FLT_MAX, float scale_max = FLT_MIN, ImVec2 graph_size = ImVec2(0,0), int stride = sizeof(float)) |
|
样式和布局
ImGui::PushStyleColor(ImGuiCol idx, ImU32 col): 推送颜色样式到栈中。ImGui::PopStyleColor(int count = 1): 弹出颜色样式。ImGui::PushStyleVar(ImGuiStyleVar var_idx, float val): 推送样式变量到栈中。ImGui::PopStyleVar(int count = 1): 弹出样式变量。ImGui::SetNextWindowSize(const ImVec2& size, ImGuiCond cond = 0): 设置下一个窗口的大小。ImGui::SetNextWindowPos(const ImVec2& pos, ImGuiCond cond = 0): 设置下一个窗口的位置。
其他常用函数
ImGui::OpenPopup(const char* str_id): 打开一个弹出窗口。ImGui::BeginPopup(const char* str_id, ImGuiWindowFlags flags = 0): 开始一个弹出窗口。ImGui::EndPopup(): 结束弹出窗口的绘制。ImGui::IsItemHovered(): 检查当前鼠标是否悬停在某个项上。ImGui::IsItemActive(): 检查当前项是否处于活动状态(如被拖动、编辑等)
除了之前提到的ImGui常用API外,还有一些其他的API和功能也值得注意:
文本输入和键盘处理
ImGui::InputTextMultiline(...): 创建一个支持多行文本的输入框。ImGui::InputTextWithHint(...): 创建一个带有提示文本的输入框。ImGui::KeyboardChar(...): 向ImGui传递一个键盘字符事件(通常用于处理键盘输入)。
选择器和列表
ImGui::Combo(...): 创建一个下拉选择器,允许用户从预定义的选项列表中选择一个。ImGui::ListBoxHeader(...)和ImGui::ListBoxFooter(...): 用于自定义列表框的渲染。
布局控制
ImGui::BeginGroup()和ImGui::EndGroup(): 创建一个可以移动、缩放或隐藏的元素组。ImGui::Indent(...)和ImGui::Unindent(...): 增加或减少缩进级别,用于控制子元素的缩进。ImGui::Columns(...)、ImGui::NextColumn()等:用于创建列布局。
弹出窗口和工具提示
ImGui::BeginTooltip()和ImGui::EndTooltip(): 创建一个工具提示(tooltip)。ImGui::SetTooltip(...): 为当前悬停的项设置工具提示文本。
拖放和滑动
ImGui::DragFloat(...),ImGui::DragInt(...)等:用于创建可以拖放的滑块。ImGui::SliderScalar(...): 创建一个可以拖放的滑块,支持各种数据类型。
菜单和上下文菜单
ImGui::BeginMainMenuBar()和ImGui::EndMainMenuBar(): 创建主菜单栏。ImGui::BeginMenu(...)和ImGui::EndMenu(): 创建一个下拉菜单。ImGui::BeginPopupContextItem(...)和ImGui::BeginPopupContextWindow(...): 创建与特定项或窗口关联的上下文菜单。
图像和绘图
ImGui::Image(...): 显示一个图像。ImGui::ImageButton(...): 创建一个可以点击的图像按钮。ImGui::GetWindowDrawList(): 获取当前窗口的绘图列表,用于自定义绘图。
工具和实用程序
ImGui::ShowDemoWindow(...): 显示一个演示窗口,其中包含ImGui的所有功能和控件的示例。ImGui::ShowMetricsWindow(...): 显示一个窗口,其中包含关于ImGui渲染性能的详细统计信息。ImGui::StyleColorsDark(...),ImGui::StyleColorsClassic(...)等:应用预定义的样式主题。
窗口标志和样式
ImGuiWindowFlags枚举:包含用于控制窗口行为的多个标志。ImGuiStyle结构体:包含用于控制ImGui界面样式的多个字段。
这些只是ImGui库提供的一部分功能和API,具体的使用方法和效果请参考ImGui的官方文档和示例代码。
如窗口、标签页、按钮、文本框、进度条、滑块、输入框、树
控件
ImGui库提供了许多常用的控件,包括但不限于以下这些:
基本控件:
- Label:用于显示文本标签。
- Text:用于显示文本内容。
- Button:创建可点击的按钮。
- Checkbox:创建复选框控件,用于表示开关状态。
- Radio Button:创建单选按钮控件,用于从一组选项中选择一个。
- Slider:创建滑动条控件,用于选择连续的值。
- Drag:与Slider类似,但更侧重于拖拽操作来选择值。
输入控件:
- Input Text:创建文本框控件,用于输入文本。
- Input Float, Input Int:创建用于输入浮点数或整数的控件。
列表和树形控件:
- List Box:创建列表框控件,用于显示可选项列表。
- Tree:创建树形控件,用于展示层次结构的数据。
颜色选择器:
- Color Picker:允许用户选择颜色。
菜单和工具栏:
- Menu:创建下拉菜单。
- Toolbar:创建工具栏,通常包含多个按钮或选项。
滚动条和滚动区域:
- Scrollbar:创建滚动条控件。
- Scrolling Region:允许在滚动区域内显示大量内容。
弹出窗口和对话框:
- Popup:创建弹出窗口。
- Modal Window:创建模态对话框,阻止用户与对话框之外的其他内容交互。
其他:
- Progress Bar:显示进度条。
- Tab Bar:创建选项卡栏,用于在不同视图或页面之间切换。
- Collapsing Header:可折叠的标题,通常用于组织相关内容。
- ComboBox:组合框,结合了文本框和下拉列表的功能。
- Image:显示图像。
请注意,ImGui库还在不断更新和发展中,可能会添加新的控件或改进现有控件的功能。因此,建议查阅最新的ImGui文档或源代码以获取最准确和完整的信息。
Comment
匿名评论隐私政策
TwikooWaline
✅ 你无需删除空行,直接评论以获取最佳展示效果














