当前位置:网站首页>今天告诉你界面控件DevExpress WinForms为何弃用经典视觉样式
今天告诉你界面控件DevExpress WinForms为何弃用经典视觉样式
2022-08-05 10:27:00 【界面开发小八哥】
许多DevExpress老用户都知道,使用DevExpress WinForm UserLookAndFeel API可为单个控件或整个应用程序启用"classic"视觉样式(“Flat”、“UltraFlat”、“XP”等)。在这篇文章中,小编将为大家描述这些“过时”的经典样式,并解释为什么我们选择启用此API,并将"Skin" 样式作为唯一选择。
获取DevExpress WinForms v22.1正式版下载
经典样式的案例
性能
每个皮肤都存储了大量绘制在 UI 元素上方的光栅或矢量图像,如果禁用皮肤并切换到经典视觉样式,理论上可以提高应用程序性能(因为 UI 元素将不再需要检索和绘制皮肤图像)。
实际上,皮肤和"Flat" 应用程序之间的性能差异可以忽略不计(考虑到现代硬件性能)。 矢量皮肤的可用性使这个问题变得没有意义——矢量图像比光栅位图对应物轻量级并且消耗更少的资源。
远程桌面环境
用户群中有一个普遍的认知,简单的绘制方法(负责平面外观)在远程桌面环境中最有效。 事实上,所有现代远程环境都采用视频流编码,根据内部测试,矢量图像在这种环境下会产生最佳效果。换句话说,矢量 WinForms 主题以及我们新的 OptimizeRemoteConnectionPerformance设置将在远程环境中提供最佳性能 - 并且不会牺牲 WinForms 应用程序的整体外观。
易于访问
旧的"High Contrast" 皮肤是基于光栅图像的,这意味着它无法适应系统设置。 如果您希望应用程序使用"Personalize | High contrast settings" Windows 菜单中的颜色,则必须启用经典的"Flat"样式。虽然这种样式可以从激活的Windows 高对比度主题中检索颜色,但某些控件(例如我们的功能区)保留了自己独特的外观。
随着 v21.1 的发布,用户可以使用基于矢量的高对比度皮肤。 此皮肤使用来自激活的Windows预设的颜色,并且(与我们经典的 "Flat"样式不同)保证在所有 DevExpress WinForm UI 控件中提供统一的外观。
自定义突出显示
由于皮肤图像直接绘制在 UI 元素上方,因此某些使用场景会阻止您使用元素的外观设置(即“BackColor”属性)。 对于那些想要应用自定义元素外观(例如,将“取消”SimpleButton 涂成红色)的人来说,禁用皮肤并切换到经典样式是默认技术。
这个 "limitation” 不再是限制(v18.2+),在v18.2版本中,即使皮肤处于激活状态,我们也可以使用外观设置。
个人偏好
有些人更喜欢 "unskinned"的复古外观和感觉,现在您可以使用DevExpress 矢量皮肤提供 “retro” 外观,矢量皮肤包括数十种颜色变化(调色板),包括简化的"gray-ish" 颜色选项。

正如我们希望在这篇文章中说明的那样,经典样式和 "unskinned" 应用程序的情况已不再是以前那样。 尽管有这个现实,你可能会问为什么? 为什么要弃用经典样式等长期存在的功能?
这个问题的简单答案是旧样式设置和我们的一些最新功能不兼容。 例如,当 UserWindowsXPTheme 设置处于激活状态时,DevExpress WinForms 数据网格的标题内筛选器无法正常工作。 此外每次引入一个新的特性,比如 in-header 过滤器,我们都被迫重写单独的控制绘制器,支持经典样式等传统功能的成本很高,并且在某些情况下会产生不可接受的结果(例如,XP主题在高DPI设备上看起来不太好)。
下一步是什么?
删除整个自定义 API 层是一大步,官方产品团队不会急于这样做。目前将停止修复与经典样式相关的错误,最终将弃用这些旧设置,以防止它们产生类似于与标题列过滤相关的问题。
DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
DevExpress技术交流群6:600715373 欢迎一起进群讨论
边栏推荐
- Header file search rules when compiling with GCC
- FPGA: Use of the development environment Vivado
- MySQL事务
- 攻防世界-PWN-new_easypwn
- Login function and logout function (St. Regis Takeaway)
- 阿里顶级架构师多年总结的JVM宝典,哪里不会查哪里!
- STM32+ULN2003 drives 28BYJ4 stepper motor (forward and reverse according to the number of turns)
- GCC编译的时候头文件搜索规则
- 我们的Web3创业项目,黄了
- Technical dry goods | Hausdorff distance for image segmentation based on MindSpore
猜你喜欢
Introduction to SD NAND Flash!
Common operations of oracle under linux and daily accumulation of knowledge points (functions, timed tasks)
three物体围绕一周呈球形排列
Jenkins manual (2) - software configuration
Meteorological data processing example - matlab string cutting matching and R language date matching (data splicing)
The founder of the DFINITY Foundation talks about the ups and downs of the bear market, and where should DeFi projects go?
产品太多了,如何实现一次登录多产品互通?
Technical dry goods | Hausdorff distance for image segmentation based on MindSpore
技术干货 | 基于 MindSpore 实现图像分割之豪斯多夫距离
电竞、便捷、高效、安全,盘点OriginOS功能的关键词
随机推荐
第四章:redis 数组结构的set和一些通用命令「建议收藏」
JS introduction to reverse the recycling business network of learning, simple encryption mobile phone number
静态链接和动态链接
Chapter 4: In the activiti process, variable transmission and acquisition process variables, setting and acquiring multiple process variables, setting and acquiring local process variables "recommende
012_SSS_ Improving Diffusion Model Efficiency Through Patching
阿里全新推出:微服务突击手册,把所有操作都写出来了PDF
高质量 DeFi 应用构建指南,助力开发者玩转 DeFi Summer
2022华数杯数学建模A题环形振荡器的优化设计思路思路代码分享
012年通过修补_sss_提高扩散模型效率
入门 Polkadot 平行链开发,看这一篇就够了
第八章:activiti多用户任务分配
百年北欧奢华家电品牌ASKO智能三温区酒柜臻献七夕,共品珍馐爱意
js劫持数组push方法
首次去中心化抢劫?近2亿美元损失:跨链桥Nomad 被攻击事件分析
深入理解 Istio 流量管理的超时时间设置
【综合类型第 35 篇】程序员的七夕浪漫时刻
js hijacks the array push method
SQL外连接之交集、并集、差集查询
气象数据数据处理实例——matlab字符串切割匹配与R语言日期匹配(数据拼接)
PCB layout must know: teach you to correctly lay out the circuit board of the op amp