ImGui-imgui實例解析之ShowStyleEditor-Sizes
獲取皮膚:
ImGuiStyle& style = ImGui::GetStyle();
設置寬度:
ImGui::PushItemWidth(ImGui::GetWindowWidth() * 0.50f);
顏色選擇器:
if (ImGui::ShowStyleSelector("Colors##Selector"))
ref_saved_style = style;
生成下拉框:
if (ImGui::Combo(label, &style_idx, "Dark\0Light\0Classic\0"))
{
switch (style_idx)
{
case 0: ImGui::StyleColorsDark(); break;
case 1: ImGui::StyleColorsLight(); break;
case 2: ImGui::StyleColorsClassic(); break;
}
}
字體選擇器:
ImGui::ShowFontSelector("Fonts##Selector");
獲取字體:
ImFont* font_current = ImGui::GetFont();
增加下拉顯示字體:
if (ImGui::BeginCombo(label, font_current->GetDebugName()))
{
for (int n = 0; n < io.Fonts->Fonts.Size; n++)// 循環字體
{
ImFont* font = io.Fonts->Fonts[n];// 取出字體
ImGui::PushID((void*)font);// 控件ID屬性,好像要使用節點就需要給一個唯一ID
if (ImGui::Selectable(font->GetDebugName(), font == font_current))// 這是重點,現在我也沒明白怎么算是選中?
io.FontDefault = font;// 把選中的字體給皮膚
ImGui::PopID();// 使用ID,就需要關閉ID,成對出現
}
ImGui::EndCombo();// 下拉結束,成對出現
}
增加同行標記,增加就是一行顯示,不增加就是二行顯示。
ImGui::SameLine();
簡化設置(將浮動指針邊框大小顯示為表示0.0f或1.0f的布爾值)
if (ImGui::SliderFloat("FrameRounding", &style.FrameRounding, 0.0f, 12.0f, "%.0f"))
增加復選框:
if (ImGui::Checkbox("WindowBorder", &border))
{
style.WindowBorderSize = border ? 1.0f : 0.0f;
}
增加按鈕:
if (ImGui::Button("Save Ref"))
*ref = ref_saved_style = style;
分離器:我感覺就是換一個斷落。因為會換行,並且出現一個分隔線。
ImGui::Separator();
增加選項卡:
if (ImGui::BeginTabBar("##tabs", ImGuiTabBarFlags_None))
{
// 例如:ImGui::BeginTabItem("Sizes")
ImGui::EndTabBar();
}
增加選項頁:
if (ImGui::BeginTabItem("Sizes"))
{
ImGui::EndTabItem();
}
增加綁定2個單精度的函數(數據類型為ImVec2):
ImGui::SliderFloat2("WindowPadding", (float*)&style.WindowPadding, 0.0f, 20.0f, "%.0f");
增加綁定1個單精度的函數(數據類型為float):
ImGui::SliderFloat("WindowBorderSize", &style.WindowBorderSize, 0.0f, 1.0f, "%.0f");