FishUI 1.1.1
dotnet add package FishUI --version 1.1.1
NuGet\Install-Package FishUI -Version 1.1.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FishUI" Version="1.1.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FishUI" Version="1.1.1" />
<PackageReference Include="FishUI" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FishUI --version 1.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: FishUI, 1.1.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FishUI@1.1.1
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FishUI&version=1.1.1
#tool nuget:?package=FishUI&version=1.1.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
FishUI
A dependency-free, immediate-mode-inspired GUI library for .NET applications with backend-agnostic rendering.
Features
- 47+ Built-in Controls - Buttons, textboxes, sliders, data grids, charts, gauges, particles, and more
- Backend Agnostic - Implement your own graphics/input via simple interfaces
- YAML Theming - Customizable themes with atlas/9-slice support
- Animation System - Easing functions, tweens, and particle effects
- Layout System - Anchoring, margins, StackLayout, FlowLayout, GridLayout
- Serialization - Save/load UI layouts to YAML files
- Virtual Cursor - Gamepad/keyboard navigation support
Installation
dotnet add package FishUI
For Raylib backend:
dotnet add package RaylibFishGfx
Quick Start
using FishUI;
using FishUI.Controls;
// 1. Implement IFishUIGfx (graphics) and IFishUIInput (input)
// Or use RaylibFishGfx package for a ready-to-use Raylib backend
// 2. Create FishUI instance
var settings = new FishUISettings();
var fishUI = new FishUI.FishUI(settings, gfx, input, events);
fishUI.Init();
// 3. Load a theme
settings.LoadTheme("data/themes/gwen_default.yaml", applyImmediately: true);
// 4. Add controls
var button = new Button
{
Position = new Vector2(100, 100),
Size = new Vector2(120, 30),
Text = "Click Me!"
};
button.OnButtonPressed += (btn, mbtn, pos) => Console.WriteLine("Clicked!");
fishUI.AddControl(button);
// 5. Update each frame
fishUI.Tick(deltaTime, totalTime);
Available Controls
| Category | Controls |
|---|---|
| Input | Button, Textbox, CheckBox, RadioButton, ToggleSwitch, Slider, NumericUpDown, MultiLineEditbox |
| Selection | ListBox, DropDown, TreeView, SelectionBox, DatePicker, TimePicker |
| Display | Label, StaticText, ImageBox, AnimatedImageBox, ProgressBar, LineChart, Timeline, BigDigitDisplay, ToastNotification |
| Containers | Panel, Window, GroupBox, TabControl, ScrollablePane, StackLayout, FlowLayout, GridLayout |
| Data | DataGrid, SpreadsheetGrid, PropertyGrid, ItemListbox |
| Gauges | RadialGauge, BarGauge, VUMeter |
| Effects | ParticleEmitter |
| Navigation | ScrollBarV, ScrollBarH, MenuBar, ContextMenu, MenuItem |
Implementing a Graphics Backend
Extend SimpleFishUIGfx for an easier implementation:
public class MyGfx : SimpleFishUIGfx
{
public override void Init() { /* Initialize graphics */ }
public override int GetWindowWidth() => /* window width */;
public override int GetWindowHeight() => /* window height */;
public override ImageRef LoadImage(string path) { /* Load texture */ }
public override FontRef LoadFont(string path, float size, float spacing, FishColor color) { /* Load font */ }
public override void DrawRectangle(Vector2 pos, Vector2 size, FishColor color) { /* Draw rect */ }
public override void DrawImage(ImageRef img, Vector2 pos, float rot, float scale, FishColor color) { /* Draw image */ }
public override void DrawTextColorScale(FontRef fn, string text, Vector2 pos, FishColor color, float scale) { /* Draw text */ }
public override Vector2 MeasureText(FontRef fn, string text) { /* Measure text */ }
public override void BeginScissor(Vector2 pos, Vector2 size) { /* Set clip rect */ }
public override void EndScissor() { /* Clear clip rect */ }
}
Included Assets
This package includes default assets in the data folder:
- Themes - GWEN-based default theme (
data/themes/gwen_default.yaml) - Fonts - Default fonts for UI rendering
- Images - UI atlas and icons (Silk Icons set)
Links
License
MIT License - see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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 was computed. 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net9.0
- YamlDotNet (>= 16.3.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on FishUI:
| Package | Downloads |
|---|---|
|
RaylibFishGfx
Raylib graphics and input backend for FishUI. Provides a complete, production-ready implementation using Raylib-cs. |
GitHub repositories
This package is not used by any popular GitHub repositories.