落花之塚 發表於 2021-5-11 16:38:00

ImGui-imgui介绍

<h3>相关资料:</h3>
<p>http://t.zoukankan.com/jhy16193335-p-11184676.html</p>
<h3 id="创建窗口">创建窗口</h3>
<pre><code class="language-CPP">    ImGui::Begin("Hello, world!");
    ImGui::End();
</code></pre>
<p>&nbsp;</p>
<p>其中,&nbsp;<code>ImGui::Begin("Hello, world!");</code>函数的原型是<code>IMGUI_API bool Begin(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0);</code><br>p_open决定了他是否是打开状态,flags决定了他的样式。<br>flags是一个整数,表示你需要的样式的和,以下是所有的flag</p>
<pre><code class="language-CPP">    ImGuiWindowFlags_None                   = 0,
    ImGuiWindowFlags_NoTitleBar             = 1 &lt;&lt; 0,   // Disable title-bar
    ImGuiWindowFlags_NoResize               = 1 &lt;&lt; 1,   // Disable user resizing with the lower-right grip
    ImGuiWindowFlags_NoMove               = 1 &lt;&lt; 2,   // Disable user moving the window
    ImGuiWindowFlags_NoScrollbar            = 1 &lt;&lt; 3,   // Disable scrollbars (window can still scroll with mouse or programmatically)
    ImGuiWindowFlags_NoScrollWithMouse      = 1 &lt;&lt; 4,   // Disable user vertically scrolling with mouse wheel. On child window, mouse wheel will be forwarded to the parent unless NoScrollbar is also set.
    ImGuiWindowFlags_NoCollapse             = 1 &lt;&lt; 5,   // Disable user collapsing window by double-clicking on it
    ImGuiWindowFlags_AlwaysAutoResize       = 1 &lt;&lt; 6,   // Resize every window to its content every frame
    ImGuiWindowFlags_NoBackground         = 1 &lt;&lt; 7,   // Disable drawing background color (WindowBg, etc.) and outside border. Similar as using SetNextWindowBgAlpha(0.0f).
    ImGuiWindowFlags_NoSavedSettings      = 1 &lt;&lt; 8,   // Never load/save settings in .ini file
    ImGuiWindowFlags_NoMouseInputs          = 1 &lt;&lt; 9,   // Disable catching mouse, hovering test with pass through.
    ImGuiWindowFlags_MenuBar                = 1 &lt;&lt; 10,// Has a menu-bar
    ImGuiWindowFlags_HorizontalScrollbar    = 1 &lt;&lt; 11,// Allow horizontal scrollbar to appear (off by default). You may use SetNextWindowContentSize(ImVec2(width,0.0f)); prior to calling Begin() to specify width. Read code in imgui_demo in the "Horizontal Scrolling" section.
    ImGuiWindowFlags_NoFocusOnAppearing   = 1 &lt;&lt; 12,// Disable taking focus when transitioning from hidden to visible state
    ImGuiWindowFlags_NoBringToFrontOnFocus= 1 &lt;&lt; 13,// Disable bringing window to front when taking focus (e.g. clicking on it or programmatically giving it focus)
    ImGuiWindowFlags_AlwaysVerticalScrollbar= 1 &lt;&lt; 14,// Always show vertical scrollbar (even if ContentSize.y &lt; Size.y)
    ImGuiWindowFlags_AlwaysHorizontalScrollbar=1&lt;&lt; 15,// Always show horizontal scrollbar (even if ContentSize.x &lt; Size.x)
    ImGuiWindowFlags_AlwaysUseWindowPadding = 1 &lt;&lt; 16,// Ensure child windows without border uses style.WindowPadding (ignored by default for non-bordered child windows, because more convenient)
    ImGuiWindowFlags_NoNavInputs            = 1 &lt;&lt; 18,// No gamepad/keyboard navigation within the window
    ImGuiWindowFlags_NoNavFocus             = 1 &lt;&lt; 19,// No focusing toward this window with gamepad/keyboard navigation (e.g. skipped by CTRL+TAB)
    ImGuiWindowFlags_UnsavedDocument      = 1 &lt;&lt; 20,// Append '*' to title without affecting the ID, as a convenience to avoid using the ### operator. When used in a tab/docking context, tab is selected on closure and closure is deferred by one frame to allow code to cancel the closure (with a confirmation popup, etc.) without flicker.
    ImGuiWindowFlags_NoNav                  = ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
    ImGuiWindowFlags_NoDecoration         = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse,
    ImGuiWindowFlags_NoInputs               = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,

    //
    ImGuiWindowFlags_NavFlattened         = 1 &lt;&lt; 23,// Allow gamepad/keyboard navigation to cross over parent border to this child (only use on child that have no scrolling!)
    ImGuiWindowFlags_ChildWindow            = 1 &lt;&lt; 24,// Don't use! For internal use by BeginChild()
    ImGuiWindowFlags_Tooltip                = 1 &lt;&lt; 25,// Don't use! For internal use by BeginTooltip()
    ImGuiWindowFlags_Popup                  = 1 &lt;&lt; 26,// Don't use! For internal use by BeginPopup()
    ImGuiWindowFlags_Modal                  = 1 &lt;&lt; 27,// Don't use! For internal use by BeginPopupModal()
    ImGuiWindowFlags_ChildMenu            = 1 &lt;&lt; 28   // Don't use! For internal use by BeginMenu()
</code></pre>
<p>以上内容在<code>imgui.h</code>的枚举<code>ImGuiWindowFlags_</code>里也有。</p>
<h3 id="创建文字">创建文字</h3>
<pre><code class="language-CPP">    ImGui::Begin("Hello, world!");
    ImGui::Text("%s","Hello");
    ImGui::Text("world");
    ImGui::End();</code><br><br><br></pre>
<p>其中文字是可以使用格式化的。</p>
<h3 id="创建图片">创建图片</h3>
<pre><code class="language-CPP">ImGuiIO&amp; io = ImGui::GetIO();
    ImTextureID tex_id = io.Fonts-&gt;TexID;
    ImGui::Begin("Hello, world!");
    ImGui::Image(tex_id,ImVec2(64,64));
    ImGui::End();</code><br><br><br>由于Imgui的图片加载和自己选择的图形渲染库有关,所以这里我们拿字体图片做例子。<br>猜测,由于字体图片的比例和我们设置的长宽比不一致,所以渲染出来的图形也不是正方形。<br><code>ImGui::Image</code>的函数原型是<code>IMGUI_API void Image(ImTextureID user_texture_id, const ImVec2&amp; size, const ImVec2&amp; uv0 = ImVec2(0,0), const ImVec2&amp; uv1 = ImVec2(1,1), const ImVec4&amp; tint_col = ImVec4(1,1,1,1), const ImVec4&amp; border_col = ImVec4(0,0,0,0));</code><br>其中size是渲染出来的大小,uv0和uv1都是一个0-1的小数,表示要渲染的图片在材质的位置,tint_col和border_col是两个颜色由一个32位整数表示,RGBA。</pre>

</div>
<div id="MySignature" role="contentinfo">
    <div id="AllanboltSignature">   
      <div>作者:疯狂Delphi</div>
      <div>出处:https://www.cnblogs.com/FKdelphi/</div>
      <div>本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.</div>
</div>
<div class="div_masklayer" id="div_masklayer"></div>
<div class="div_popup" id="Div_popup">
<p class="mid">欢迎关注我,一起进步!扫描下方二维码即可加我</p>
<img class="img_zfb" id="img_zfb" width="150" src="https://images.cnblogs.com/cnblogs_com/FKdelphi/1101510/o_251208113944_QQ.png">
<img class="img_zfb" id="img_zfb" width="150" src="https://images.cnblogs.com/cnblogs_com/FKdelphi/1101510/o_251208115029_WX.png">
</div><br><br>
来源:https://www.cnblogs.com/FKdelphi/p/14756094.html
頁: [1]
查看完整版本: ImGui-imgui介绍