Skip navigation

emWin—Industry Leading Embedded Graphics Library

The professional embedded GUI emWin enables the creation of highly efficient, and high quality graphical user interfaces on any embedded system. emWin empowers even resource-constrained microcontroller-based systems to run stunning interactive interfaces. emWin is independent from any target, and display.

  • Create stunning graphics with a powerful and easy to use API
  • Use any display and any microcontroller
  • Use any ANSI C/C++ development environment
  • Experience the reliability of a proven graphics solution
  • Embedded graphical user interface solution



About emWin

emWin, the embedded GUI solution, is compatible with single-task and multitask environments with a proprietary operating system or with any commercial RTOS such as embOS. The GUI is shipped as "C" source code. emWin can be adapted to any size, either physical or virtual display, not dependent of the display controller and target CPU. Making it a professional GUI for the embedded market, usable for multiple different scenarios.



SEGGERs GUI emWin is deployed in a huge number of mass market devices. It is considered the industry standard for user interface and graphic software in the embedded industry.



emWin is a high-performance graphics package that has been optimized for minimum memory consumption in both, RAM and ROM, as well as high speed, and versatility. Making it a state-of-the-art solution for GUIs.



emWin supports virtually any display and display controller. The GUI can use any type of display controller. If a controller is not yet supported, please contact us to create a working solution for your needs.


Output Quality

The embedded GUI solution emWin provides high quality graphic functions that create the highest level of detail as required by the application.

One GUI Solution for all Applications

emWin can be used in any application from battery-powered single chip products with basic graphic needs, to high-end embedded systems demanding ultra-high performance, and sophisticated animations. emWin, the professional GUI by SEGGER is used in many different target markets such as industrial controls, internet of things (IoT), networking, consumer electronics, safety critical devices, automotive, medical devices, and avionics, making it a state-of-the-art GUI solution in the embedded industry.


Industrial Controls

emWin is an essential component of every industrial control.


Smart Home/
Internet of Things

emWin is designed for ultra low power consumption and can be used in any battery-powered application.


Home Appliances

emWin is the first choice for major white goods companies.


Consumer Electronics

emWin is the first choice for any consumer electronics device. Consumer electronics include devices used for entertainment or communications.


Safety Critical Devices

emWin provides the user-interface for access control and any other safety critical device.



emWin is the perfect graphics package for dashboard applications.


Medical Devices

emWin is the perfect solution to display health data.



Engineers building aerospace systems know that they can rely on emWin for their graphical needs.

Package Content

FeaturesemWin PROemWin BASE coloremWin BASE grayscaleemWin BASE b/w
emWin source code





Analog touch screen support





Basic fonts charset ISO 8859-1










Mouse support





Simulation library





Additional Modules
emWin Antialiasing





emWin Memory devices





emWin MultiTouch





emWin Simulation Source





emWin VNC Server





emWin WM/Widgets





AppWizard GUI Design Tool





Bitmap Converter





Font Converter





emWin driver included





Updates and Technical Support
Feature & Maintenance Updates





Technical Support







Getting Started

Adding emWin to the Target Program

You basically have a choice between including only the source files that you are actually going to use in your project, which will then be compiled and linked, or creating a library and linking the library file. If your tool chain supports "smart" linking (linking in only the modules that are referenced and not those that are not referenced), there is no real need to create a library at all, since only the functions and data structures which are required, will be linked. If your tool chain does not support "smart" linking, a library makes sense, because otherwise everything will be linked and the program size will be excessively large. For some CPUs we have example projects available to help you get started.

Generally speaking, you need to include the core C files of emWin, the display driver, all font files you plan to use, and any optional modules you have ordered with emWin.


Before emWin can be used on a target system, the software needs to be configured. Configuring means, modifying the configuration files which usually reside in the configuration sub directory. We try to keep the configuration as simple as possible, but there are some configuration routines which need to be modified in order for the system to work properly.

The following items need to be configured: •

  • Memory area to be used by emWin •
  • Display driver to be used for drawing operations •
  • Color conversion routines to be used •
  • Display controller initialization •
  • Hardware acceleration

Writing Applications

emWin comes with an extensive collection of samples and tutorials which could be easily used as starting point. To get something on the display the typical 'Hello World' application looks as follows:

MainTask(void) {
  GUI_DispString("Hello World!");
  while (1) {


Do I have to pay additional royalties for self-made-hardware components?

A: No, all options are royalty-free and allow an unlimited production volume.

Does emWin support e.g. 20 languages in Latin, Cyrillic and Asian fonts?

A: Yes, emWin supports all languages.

Does emWin support bidirectional scripts?

A: Yes, emWin supports also bidirectional script e.g. Hebrew and Arabic script.

Is it Possible to store languages and font types on an external storage device?

A: This is up to you and depends on the capacity of your memory.

I Want to illustrate symbols, drawings, background images, buttons, Drop down menus with drawings and text (up to 4-layer deep), alpha blending, pop-up windows, scroll bars etc.

A: All requested elements are supported by emWin and provided as so-called widgets. For more information please visit the emWin Widgets page.

Is it possible to design my own widgets with emWin?

A: Yes! You can freely determine and design widgets and windows by overwriting the callback feature or setting an owner-draw feature. Please visit the emWin Samples page for more information.

I want to apply a capacitive touch. We want to address the given touch control unit directly. Is this supported by emWin?

A: Yes capacitive touch is supported by emWin. You just need to transfer the data to emWin which you get from the touch controller. These are typically x- and y- coordinates and the ID. The processing of the data will be handled by emWin automatically. Additionally emWin offers the option to calibrate the touch controller.