zoukankan      html  css  js  c++  java
  • ImGui-imgui实例解析之ShowDemoWindowWidgets-Basic

     

    ImGui-imgui实例解析之ShowDemoWindowWidgets

    应该是禁用的功能:但不知道为什么在1.83的界面没看到。而且1.72版本是没有这个功能的。
    ImGui::BeginDisabled();
    ImGui::EndDisabled();
    增加按钮:处理事件,作者这种处理方式,我还是第一次看到。
    if (ImGui::Button("Button"))
    clicked++;
    if (clicked & 1)
    {
    ImGui::SameLine();
    ImGui::Text("Thanks for clicking me!");
    }
    增加复选框:
    static bool check = true;
    ImGui::Checkbox("checkbox", &check);
    增加单选框:
    static int e = 0;
    ImGui::RadioButton("radio a", &e, 0); ImGui::SameLine();
    ImGui::RadioButton("radio b", &e, 1); ImGui::SameLine();
    ImGui::RadioButton("radio c", &e, 2);
    给按钮设置三态颜色:
    for (int i = 0; i < 7; i++)
    {
    if (i > 0)
    ImGui::SameLine();
    ImGui::PushID(i);
    ImGui::PushStyleColor(ImGuiCol_Button, (ImVec4)ImColor::HSV(i / 7.0f, 0.6f, 0.6f));
    ImGui::PushStyleColor(ImGuiCol_ButtonHovered, (ImVec4)ImColor::HSV(i / 7.0f, 0.7f, 0.7f));
    ImGui::PushStyleColor(ImGuiCol_ButtonActive, (ImVec4)ImColor::HSV(i / 7.0f, 0.8f, 0.8f));
    ImGui::Button("Click");
    ImGui::PopStyleColor(3);
    ImGui::PopID();
    }
    使用AlignTextToFramePadding()将文本基线与框架小部件元素的基线对齐(否则,默认情况下,Text+SameLine+按钮序列的文本将有点太高!)
    ImGui::AlignTextToFramePadding();
    带中继器的箭头按钮:
    static int counter = 0;
    float spacing = ImGui::GetStyle().ItemInnerSpacing.x;
    ImGui::PushButtonRepeat(true);
    if (ImGui::ArrowButton("##left", ImGuiDir_Left)) { counter--; }
    ImGui::SameLine(0.0f, spacing);
    if (ImGui::ArrowButton("##right", ImGuiDir_Right)) { counter++; }
    ImGui::PopButtonRepeat();
    是否靠近:
    if (ImGui::IsItemHovered())
    ImGui::SetTooltip("I am a tooltip");// 提示
    是否靠近:
    if (ImGui::IsItemHovered())
    {
    ImGui::BeginTooltip();
    ImGui::Text("I am a fancy tooltip");
    static float arr[] = { 0.6f, 0.1f, 1.0f, 0.5f, 0.92f, 0.1f, 0.2f };
    ImGui::PlotLines("Curve", arr, IM_ARRAYSIZE(arr));
    ImGui::EndTooltip();
    }
    制图:
    ImGui::PlotLines("Curve", arr, IM_ARRAYSIZE(arr));
    增加LABEL:真心不知道TEXT与Lable的区别了。
    ImGui::LabelText("label", "Value");
    增加下拉框:有没有人能说明白ImGui::Combo ImGui::BeginCombo的区别,是不是代begin的代表区间?
    const char* items[] = { "AAAA", "BBBB", "CCCC", "DDDD", "EEEE", "FFFF", "GGGG", "HHHH", "IIIIIII", "JJJJ", "KKKKKKK" };
    static int item_current = 0;
    ImGui::Combo("combo", &item_current, items, IM_ARRAYSIZE(items));
    输入文本框:
    static char str0[128] = "Hello, world!";
    ImGui::InputText("input text", str0, IM_ARRAYSIZE(str0));
    代表提示的文本框:
    static char str1[128] = "";
    ImGui::InputTextWithHint("input text (w/ hint)", "enter text here", str1, IM_ARRAYSIZE(str1));
    输入数字框:作者太有想法了,支持在框里输入+100,就可以累计。
    static int i0 = 123;
    ImGui::InputInt("input int", &i0);
    单精度输入框:单精度有6位小数,双精度有15位小数。如果是记录经纬度的请用双精度,谢谢!-⌒-
    static float f0 = 0.001f;
    ImGui::InputFloat("input float", &f0, 0.01f, 1.0f, "%.3f");
    双精度输入框:
    static double d0 = 999999.00000001;
    ImGui::InputDouble("input double", &d0, 0.01f, 1.0f, "%.8f");
    科技计数法输入框:例如,“1e+8”变为“100000000”
    static float f1 = 1.e10f;
    ImGui::InputFloat("input scientific", &f1, 0.0f, 0.0f, "%e");
    单精度3个值:比如颜色
    static float vec4a[4] = { 0.10f, 0.20f, 0.30f, 0.44f };
    ImGui::InputFloat3("input float3", vec4a);
    托动输入INT条:单击并拖动以编辑值,按住SHIFT/ALT进行更快/更慢的编辑,双击或CTRL+单击以输入值
    static int i1 = 50, i2 = 42;
    ImGui::DragInt("drag int", &i1, 1);
    托动输入INT条(代区域):
    ImGui::DragInt("drag int 0..100", &i2, 1, 0, 100, "%d%%", ImGuiSliderFlags_AlwaysClamp);
    托动输入float条:
    static float f1 = 1.00f, f2 = 0.0067f;
    ImGui::DragFloat("drag float", &f1, 0.005f);
    托动输入float条(小数字):
    ImGui::DragFloat("drag small float", &f2, 0.0001f, 0.0f, 0.0f, "%.06f ns");
    滚动条输入int:
    static int i1 = 0;
    ImGui::SliderInt("slider int", &i1, -1, 3);
    ImGui::SameLine(); HelpMarker("CTRL+click to input value.");
    滚动条输入float:
    static float f1 = 0.123f, f2 = 0.0f;
    ImGui::SliderFloat("slider float", &f1, 0.0f, 1.0f, "ratio = %.3f");
    滚动条输入float(log):
    ImGui::SliderFloat("slider float (log)", &f2, -10.0f, 10.0f, "%.4f", ImGuiSliderFlags_Logarithmic);
    滚动条输入角度:
    static float angle = 0.0f;
    ImGui::SliderAngle("slider angle", &angle);
    滚动显示枚举:
    enum Element { Element_Fire, Element_Earth, Element_Air, Element_Water, Element_COUNT };
    static int elem = Element_Fire;
    const char* elems_names[Element_COUNT] = { "Fire", "Earth", "Air", "Water" };
    const char* elem_name = (elem >= 0 && elem < Element_COUNT) ? elems_names[elem] : "Unknown";
    ImGui::SliderInt("slider enum", &elem, 0, Element_COUNT - 1, elem_name);
    颜色编辑器(3值):
    static float col1[3] = { 1.0f, 0.0f, 0.2f };
    static float col2[4] = { 0.4f, 0.7f, 0.0f, 0.5f };
    ImGui::ColorEdit3("color 1", col1);
    颜色编辑器(4值):
    ImGui::ColorEdit4("color 2", col2);
    增加列表框:
    const char* items[] = { "Apple", "Banana", "Cherry", "Kiwi", "Mango", "Orange", "Pineapple", "Strawberry", "Watermelon" };
    static int item_current = 1;
    ImGui::ListBox("listbox", &item_current, items, IM_ARRAYSIZE(items), 4);

    作者:疯狂Delphi
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

    欢迎关注我,一起进步!扫描下方二维码即可加我

  • 相关阅读:
    UVA 1025 A Spy in the Metro DP水题
    ZOJ 3814 Sawtooth Puzzle BFS
    ZOJ 3816 Generalized Palindromic Number
    UVA 10859 Placing Lampposts 树形DP
    UVA 11825 Hackers' Crackdown 状压DP
    POJ 2887 Big String 线段树 离线处理
    POJ 1635 Subway tree systems Hash法判断有根树是否同构
    BZOJ 3110 k大数查询 & 树套树
    sdoi 2009 & 状态压缩
    来自于2016.2.24的flag
  • 原文地址:https://www.cnblogs.com/FKdelphi/p/15251750.html
Copyright © 2011-2022 走看看