Hey Developers,
Almost three years ago I shared some experiments with
Custom UI Elements with Eto.Forms.
A lot has happened since.
We’re launching April 21st and sign ups are open at https://jifto.com/
You can see the changelog here: Changelog | jifto
This post is about the UI side of things, since that’s what the original thread was about.
Eto served us well for the early prototypes, but we hit a ceiling. Redrawing a complex panel at 60 fps with Drawable was eating CPU and dropping frames once you had a few animated controls on screen.
I rewrote the entire control library from scratch using SkiaSharp rendering to an OpenGL surface. Every control - buttons, sliders, dropdowns, gradients, charts, the HUD - is drawn with Skia. This gave us GPU-accelerated rendering across the whole interface, 60FPS refresh, and full control over layout and animation without fighting a framework.
What it looks like in practice
Sliders drive the analysis live - no “Apply” button.
Preset buttons with visual feedback.
Animated transitions when switching tabs.
HUD legend and overlays drawn with the same Skia pipeline as the panel.
Context-sensitive controls that adapt to the current workflow.
A dedicated panel which only appears when you need it and adapts its context to your work.
Live metrics when simulations run async
One-click gradient preset switching.
Micro-interactions adding the final polish.
Happy to answer any questions about the controls, the rendering approach, or the migration from Eto to Skia.
Tagging a few people, who expressed interest in custom UIs in the past.
@DavidRutten, @AndersDeleuran, @aramon, @lando.schumpich, @mlukasz87, @matteo1, @Felipe_Penagos, @maxsoder, @Holo, @johannavarro.art, @D-W, @jordanmathers.jm