Many of our experienced customers know that you can use the DevExpress WinForms UserLookAndFeel
API to enable "classic" visual styles ("Flat", "UltraFlat", "XP", etc.) for an individual control or an entire application. In this post, I’ll describe these "outdated" classic styles and explain why we have chosen to deprecate this API and to leave the "Skin" style as the only option.
The Case for Classic Styles
Let's take a moment and consider some of the reasons why a WinForms developer might be using a classic style like "Flat" or "Border3D" in 2021.
Performance
Each skin stores a large collection of raster or vector images painted above UI elements. If you disable skins and switch to a classic visual style, you could theoretically boost application performance (since UI elements will no longer need to retrieve and draw skin images).
In reality, the difference in performance between a skinned and a "Flat" application is negligible (given modern-day hardware performance). The availability of vector skins makes this concern moot — vector images are lightweight and consume less resources than their raster bitmap counterparts.
Remote Desktop Environments
There's a common myth among our user base that simple paint methods (responsible for flat appearance) are most effective in remote desktop environments. Truth is that all modern remote environments employ videostream encoding. Based on internal tests, vector images produce the best results in this environment. Said differently, we are 100% confident that our vector WinForms themes alongside our new OptimizeRemoteConnectionPerformance setting will deliver the best possible performance in remote environments – and will not sacrifice the overall appearance of your WinForms app.
Ease of Access
Our old "High Contrast" skin was raster image-based. This meant that it could not adapt to system settings. If you wanted your app to use colors from the "Personalize | High contrast settings" Windows menu, you had to enable our classic "Flat" style. While this style could retrieve colors from the active Windows High Contrast theme, certain controls (such as our Ribbon) retained their own unique appearance.
The good news is that with the release of v21.1, you can now use a vector-based High Contrast skin. This skin uses colors from the active Windows preset, and (unlike our classic "Flat" style) guarantees to deliver a unified appearance across all DevExpress WinForms UI controls.
Custom Highlight
Since skin images are painted directly above UI elements, certain usage scenarios prevented you from using an element’s Appearance settings (namely, the "BackColor" property). Disabling skins and switching to a classic style was the default technique for those who wanted to apply custom element appearance (for instance, to paint the "Cancel" SimpleButton red).
This "limitation” is no longer a limitation (v18.2+). With our v18.2 release, we made it possible to use Appearance settings even when a skin is active. To learn more, please review the following blog post from a couple of years ago: Skin Colors and LookAndFeel.
Personal Preferences
Tastes differ, and yes, some people prefer the "unskinned" retro look and feel. The good news is that you can deliver the “retro” look with DevExpress vector skins. Our vector skins include dozens of color variations (palettes), including simplified "gray-ish" color options.
As we’ve hopefully illustrated in this post, the case for classic styles and "unskinned" apps is not what it once was. This reality notwithstanding, you may be asking yourself why? Why deprecate a long-standing feature such as classic styles?
The simple answer to this question is that legacy style settings and some of our newest features are not compatible. For example, in-header filters for the DevExpress WinForms Data Grid do not work correctly when the UserWindowsXPTheme
setting is active. In addition, each time we introduce a new feature such as in-header filters, we are forced to rewrite individual control painters. Supporting a legacy feature such as classic styles is expensive and in certain instances, produces unacceptable results (for instance, the XP theme does not look great on high-DPI devices).
What's Next
Removing an entire customization API layer is a big step and we won't rush into it. For now, we are going to stop fixing bugs related to classic styles. We will eventually deprecate these legacy settings so they do not produce issues similar to those related to in-header column filtering.
Of course, we definitely want to hear from you. If you're currently using "XP" or "Style3D" and wish to do so indefinitely, please share your thoughts in the comment section below. Tell us your concerns and your needs. We will listen to all of your concerns and do our best to find a reasonable solution suitable for everyone.