TedToolkit.Hexa.Raii.ImGui
2026.5.28
dotnet add package TedToolkit.Hexa.Raii.ImGui --version 2026.5.28
NuGet\Install-Package TedToolkit.Hexa.Raii.ImGui -Version 2026.5.28
<PackageReference Include="TedToolkit.Hexa.Raii.ImGui" Version="2026.5.28" />
<PackageVersion Include="TedToolkit.Hexa.Raii.ImGui" Version="2026.5.28" />
<PackageReference Include="TedToolkit.Hexa.Raii.ImGui" />
paket add TedToolkit.Hexa.Raii.ImGui --version 2026.5.28
#r "nuget: TedToolkit.Hexa.Raii.ImGui, 2026.5.28"
#:package TedToolkit.Hexa.Raii.ImGui@2026.5.28
#addin nuget:?package=TedToolkit.Hexa.Raii.ImGui&version=2026.5.28
#tool nuget:?package=TedToolkit.Hexa.Raii.ImGui&version=2026.5.28
TedToolkit.Hexa.Raii.ImGui
RAII-style scope wrappers for Hexa.NET.ImGui, enabling safe and ergonomic use of ImGui's Begin/End and Push/Pop API pairs via C# using statements.
Part of the TedToolkit.Hexa.Raii project.
Installation
dotnet add package TedToolkit.Hexa.Raii.ImGui
Overview
ImGui requires paired calls such as Begin/End, PushStyleVar/PopStyleVar, etc. These wrappers guarantee the matching cleanup function is always invoked when a scope exits, using readonly ref struct types that implement IDisposable.
Each wrapper:
- Returns a stack-allocated
readonly ref struct— zero heap allocation - Exposes a
Succeedproperty (andbooloperators) for conditional content rendering - Accepts an optional
enableparameter to skip theBegin/Endpair entirely - Is marked
AggressiveInliningfor zero overhead
Usage
using TedToolkit.Hexa.Raii;
// Basic usage — End() is always called on scope exit
using (ImGuiRaii.Window("My Window"))
{
ImGui.Text("Hello, World!");
}
// Check Succeed to render content only when the window is expanded
using var window = ImGuiRaii.Window("My Window");
if (window) // equivalent to if (window.Succeed)
{
ImGui.Text("Window is expanded!");
}
// Conditionally skip Begin/End entirely
using (ImGuiRaii.Window("Debug", enable: showDebug))
{
ImGui.Text("Only rendered when showDebug is true");
}
// Nested scopes
using (ImGuiRaii.Window("My Window"))
using (ImGuiRaii.TabBar("Tabs"))
using (ImGuiRaii.TabItem("General"))
{
ImGui.Text("Tab content");
}
// Style and layout push/pop
using (ImGuiRaii.StyleColor(ImGuiCol.Text, new Vector4(1, 0, 0, 1)))
using (ImGuiRaii.Indent())
{
ImGui.Text("Red indented text");
}
Available Scopes
| Method | Wraps | Cleanup |
|---|---|---|
Window |
ImGui.Begin |
ImGui.End |
Window (clipper) |
ImGui.Begin(ImGuiListClipper) |
ImGui.End(ImGuiListClipper) |
Child |
ImGui.BeginChild |
ImGui.EndChild |
Group |
ImGui.BeginGroup |
ImGui.EndGroup |
Combo |
ImGui.BeginCombo |
ImGui.EndCombo |
ListBox |
ImGui.BeginListBox |
ImGui.EndListBox |
MenuBar |
ImGui.BeginMenuBar |
ImGui.EndMenuBar |
MainMenuBar |
ImGui.BeginMainMenuBar |
ImGui.EndMainMenuBar |
Menu |
ImGui.BeginMenu |
ImGui.EndMenu |
Tooltip |
ImGui.BeginTooltip |
ImGui.EndTooltip |
Popup |
ImGui.BeginPopup |
ImGui.EndPopup |
Table |
ImGui.BeginTable |
ImGui.EndTable |
TabBar |
ImGui.BeginTabBar |
ImGui.EndTabBar |
TabItem |
ImGui.BeginTabItem |
ImGui.EndTabItem |
DragDropSource |
ImGui.BeginDragDropSource |
ImGui.EndDragDropSource |
DragDropTarget |
ImGui.BeginDragDropTarget |
ImGui.EndDragDropTarget |
Disabled |
ImGui.BeginDisabled |
ImGui.EndDisabled |
Font |
ImGui.PushFont |
ImGui.PopFont |
StyleColor |
ImGui.PushStyleColor |
ImGui.PopStyleColor |
StyleVar |
ImGui.PushStyleVar |
ImGui.PopStyleVar |
ItemFlag |
ImGui.PushItemFlag |
ImGui.PopItemFlag |
ItemWidth |
ImGui.PushItemWidth |
ImGui.PopItemWidth |
TextWrapPos |
ImGui.PushTextWrapPos |
ImGui.PopTextWrapPos |
ID |
ImGui.PushID |
ImGui.PopID |
ClipRect |
ImGui.PushClipRect |
ImGui.PopClipRect |
Texture |
ImGui.PushTexture |
ImGui.PopTexture |
TreeNode |
ImGui.TreeNode |
ImGui.TreePop |
TreeNodeV |
ImGui.TreeNodeV |
ImGui.TreePop |
TreeNodeEx |
ImGui.TreeNodeEx |
ImGui.TreePop |
TreeNodeExV |
ImGui.TreeNodeExV |
ImGui.TreePop |
Tree |
ImGui.TreePush |
ImGui.TreePop |
Indent |
ImGui.Indent |
ImGui.Unindent |
Target Frameworks
net6.0 · net7.0 · net8.0 · net9.0 · net10.0 · netstandard2.0 · netstandard2.1
License
Licensed under the GNU Lesser General Public License v3.0.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Hexa.NET.ImGui (>= 2.2.9)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
.NETStandard 2.1
- Hexa.NET.ImGui (>= 2.2.9)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
net10.0
- Hexa.NET.ImGui (>= 2.2.9)
-
net6.0
- Hexa.NET.ImGui (>= 2.2.9)
-
net7.0
- Hexa.NET.ImGui (>= 2.2.9)
-
net8.0
- Hexa.NET.ImGui (>= 2.2.9)
-
net9.0
- Hexa.NET.ImGui (>= 2.2.9)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.5.28 | 150 | 5/28/2026 |
| 2026.4.8 | 119 | 4/8/2026 |
| 2026.4.4 | 120 | 4/4/2026 |
| 2026.1.30.2 | 137 | 1/30/2026 |
| 2026.1.30.1 | 124 | 1/30/2026 |
| 2026.1.30 | 125 | 1/30/2026 |
| 2026.1.29.2 | 126 | 1/29/2026 |
| 2026.1.29.1 | 143 | 1/29/2026 |
| 2026.1.29 | 129 | 1/29/2026 |