惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
Scott Helme
Scott Helme
U
Unit 42
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
P
Privacy & Cybersecurity Law Blog
The GitHub Blog
The GitHub Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Webroot Blog
Webroot Blog
C
CERT Recently Published Vulnerability Notes
Simon Willison's Weblog
Simon Willison's Weblog
WordPress大学
WordPress大学
S
Securelist
S
SegmentFault 最新的问题
Y
Y Combinator Blog
P
Privacy International News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
M
MIT News - Artificial intelligence
Know Your Adversary
Know Your Adversary
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
Martin Fowler
Martin Fowler
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
T
The Blog of Author Tim Ferriss
H
Help Net Security
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recorded Future
Recorded Future
V2EX - 技术
V2EX - 技术
S
Security @ Cisco Blogs
IT之家
IT之家
T
Tenable Blog
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
I
InfoQ
GbyAI
GbyAI
月光博客
月光博客
S
Security Affairs
G
GRAHAM CLULEY
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Troy Hunt's Blog

博客园 - AABBbaby

从研发到供应链——轻量级CAD查看器SpinFire Insight在汽车行业的应用价值 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(五) 基于嵌入向量的智能检索!HOOPS AI 解锁 CAD 零件相似性搜索新方式 从自研到外购:HOOPS如何帮助工业软件开发商加速上市、聚焦差异化 车企携手Tech Soft 3D:基于 HOOPS 工具集打造Web端一体化工程可视化解决方案 CAD格式转换引擎HOOPS Exchange v2026.2.0:计算镶嵌能力升级,释放3D数据处理新潜力 界面控件DevExpress JS & ASP.NET Core v25.2新版亮点 - AI驱动扩展功能升级 CAD格式转换引擎HOOPS Exchange 2026.2.0发布:率先支持 NX 2512,引领工业数据交换新标杆 界面组件DevExpress正式官宣发布v25.2.5|附高速下载 HOOPS Mesh、HOOPS Access 与 HOOPS Solve 发布 SAM 2.15:全面提升 CAE 数据处理与仿真互操作能力 DevExpress WPF中文教程:Data Grid - 服务器模式和即时反馈模式 界面控件DevExpress WinForms中文教程:Data Grid - 数据绑定(二) CAE后处理开发选商业还是开源工具?HOOPS Envision与VTK/ParaView深度对比 DevExpress发布文档MCP Server:提升开发体验的AI文档智能服务(四) 工业级可视化引擎HOOPS Visualize Web 2026.1.0重塑Web 3D可视化体验 界面控件DevExpress VCL v25.2新功能亮点:支持RAD Studio 13 HOOPS可视化技术如何推动SINTEF Ocean海洋结构仿真软件走向工程化应用? DevExpress WPF中文教程:Data Grid - 示例服务教程 突破性迈进 | HOOPS Exchange 2026.1正式发布DGN阅读器,全面开启 DGN 数据高保真访问时代 3D Web可视化引擎HOOPS Visualize Web v2026.1.0更新发布:持续增强Web端工程级3D可视化能力 应用程序主题研发有妙招!DevExtreme拥有多种预定义主题样式 界面组件DevExpress WPF v22.1 - 全新升级数据分析功能 移动应用开发推荐这个三方组件,时间选择即刻拥有全新体验 UI组件Kendo UI for Angular R3 2022亮点——让应用程序体验更酷炫 如何用界面组件DevExpress WPF创建Excel式的过滤功能?赶紧Get 响应式UI组件DevExtreme 10月新版——v22.1.6全新发布 界面控件DevExtreme中文使用指南——如何构建 & 应用模板 行业领先的界面控价DevExpress 10月新版——v22.1.6发布 「行业应用」界面框架Kendo UI助力企业加速完成财务数据可视化 界面组件Telerik WinForm R3 2022,让应用启动变得更酷炫 界面组件DevExpress WinForms v22.1新版亮点 - 支持High-DPI UI组件Kendo UI for jQuery R3 2022亮点——拥有全新的按钮组件 界面组件DevExpress WPF TreeView中文指南 - 如何实现数据分层展示 「详解」看界面控件DevExtreme如何实现异步验证 界面控件DevExpress WinForm中文指南 - 使用HTML&CSS模板的条件样式 MyEclipse技术全面解析——Spring IDE,改变应用程序研发 界面组件DevExpress WinForms v22.1 - 类office功能全新升级 界面组件Telerik UI for WPF R3 2022——支持最新的.NET 7预览版 界面控件DevExpress WPF Data Grid组件,拥有XAML设计时项目源向导
如何用界面组件DevExpress WinForm创建一个支持High DPI的应用?
AABBbaby · 2022-10-25 · via 博客园 - AABBbaby

DevExpress WinForm拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

获取DevExpress 最新版下载

DPI Awareness模式

DPI Awareness模式指定在高分辨率屏幕上显示应用程序的方式。

界面控件DevExpress WinForm——如何创建一个支持High DPI的应用?

  • Unaware,此模式适用于Windows Vista之前的所有Windows版本。在这种模式下,应用程序假定所有显示都具有默认的96 DPI(100%)伸缩性。当在高DPI设备上显示时,应用程序的每个元素都以其原始大小呈现,然后将位图拉伸以匹配屏幕DPI,这以牺牲质量为代价保持了应用程序布局的完整性——模糊的图像、模糊的标题、粗的分隔线和边框等,您创建的任何WinForm应用程序最初都不支持DPI。
  • System,这种模式是在Windows Vista中引入的。在这种模式下,应用程序根据显示的DPI呈现,该DPI是用户会话启动时的主要显示。当显示在具有不同DPI值的显示器上时,Windows位图会缩放此类应用程序,这意味着只有一个DPI因子的应用程序仍然清晰,而在不同DPI因子的设备上变得模糊。
  • Per-Monitor和Per-Monitor V2,这些模式允许应用程序动态地适应具有不同DPIs的显示,因此应用程序在任何显示器上看起来都很清晰。在Per-Monitor模式下,Windows位图只缩放图像和非客户端区域,应用程序本身呈现应用程序的其余部分——作为开发人员,您需要跟踪系统wm_dpichanged*消息,获取当前显示的DPI,并根据这个值调整控件的大小/重新排列。第一个Per-Monitor模式是在Windows 8.1中引入的,在Windows 10创建者更新(构建1703)中,V2迭代取代了它,微软建议您始终使用Per-Monitor V2。
如何在DevExpress应用程序中DPI Awareness

要使基于DevExpress的WinForms应用程序能够感知DPI,请打开Project Settings Page并选择所需的感知模式。

界面控件DevExpress WinForm——如何创建一个支持High DPI的应用?

或者,在应用程序启动时调用以下方法:

不要使用应用程序清单文件来启用DPI感知,因为这可能会导致许多问题(例如,与clickonce不兼容)。

在应用程序被设置为DPI-aware时,不要使用Microsoft Windows图形设备接口(GDI),这可能会导致意想不到的结果。也就是说不要使用任何图形对象,如位图、笔刷或字体。另外,不要调用可能使用它们的任何子系统(例如,不要将皮肤应用到应用程序)。

调用静态的(在VB.NET中共享)WindowsFormsSettings.ForcePaintApiDiagnostics方法,以确保正确激活DPI感知。

如何构建HDPI-Ready应用程序
常用推荐和设置
  • 避免在代码中创建和自定义控件,选择Visual Studio的设计时。
  • Visual Studio应该在标准的96 DPI屏幕上运行。
  • 将表单的AutoScaleMode 属性设置为Font或DPI。
控制尺寸和布局

因为您的应用程序需要根据显示的DPI值调整大小,保持布局灵活。如果可能,使用LayoutControl、TablePanel和StackPanel容器,当父容器大小发生变化时,这些容器会自动调整控件的布局。

Images

不管DPI感知模式、光栅图像缩放出现模糊时,要保持简洁的应用程序外观,请使用矢量图像:矢量皮肤和SVG图标。

界面控件DevExpress WinForm——如何创建一个支持High DPI的应用?

如果您更喜欢栅格项目图标,可以使用DPIAwareImageCollection存储:它为每个DPI值存储独立的图像包,并根据显示在它们之间动态切换。

自定义绘制

许多DevExpress控件公开CustomDraw事件,允许您重绘控件元素。

界面控件DevExpress WinForm——如何创建一个支持High DPI的应用?

在支持DPI Awareness之前,这些事件公开了返回Graphics对象的e.Graphics属性,您可以调用此对象的方法来绘制自定义形状和文本字符串。

C#

e.Graphics.DrawString(...);

VB.NET

e.Graphics.DrawString(...)

现在所有CustomDraw<VisualElement>事件参数都公开了返回GraphicsCache对象的e.Cache属性——图形的DevExpress对象,GraphicsCache公开了与标准图形类相同的API,并针对High-DPI和directx呈现的应用程序进行了优化,您应用始终使用e.Cache属性中可用的绘制方法。

C#

e.Cache.DrawString(...);

VB.NET

e.Cache.DrawString(...)
单独控件设置
故障排除

要跟踪所有不推荐用于DirectX-rendered和Per-Monitor DPI-aware应用程序的API时,请调用静态WindowsFormsSettings.ForcePaintApiDiagnostics方法,并将安全级别设置为第一个参数:

  • Throw - 不支持的API会导致异常;
  • Trace - 不支持的API在Visual Studio的“Output”窗口中显示警告结果;
  • Disable - 忽略了不受支持的API;
远程环境下图形性能优化

远程用户不断收到应用程序视觉外观的快照,应用程序的视觉效果越多,需要进行的更新就越多。如果连接很差且刷新率低,应用程序可能看起来没有响应。在一些低性能的环境中,您可能会遇到类似的问题,例如当您的目标是使用WinForms应用程序的嵌入式系统时。

要在远程环境中减少流量消耗并提高整体性能,可以有选择地禁用可选效果。

在v21.1或更新版本中,启用OptimizeRemoteConnectionPerformance属性以最小化视觉效果和动画的数量。


DevExpress技术交流群6:600715373      欢迎一起进群讨论

更多DevExpress线上公开课、中文教程资讯请上中文网获取