请问如何使用.net开发支持Windows DPI缩放的应用程序

ttsffgg 2015-02-02 01:30:41
只讨论windows7sp1,及之后系统中的情况

使用vs.net2013开发应用程序,.net frameworks 选择4.0,新建"windows窗体应用程序",编译运行后发现在开启dpi缩放的情况下,应用程序窗口及内容虽然按照正确的比例被放大了,但文字模糊,
也就是说程序的界面其实依然是在100%的96DPI下生成,然后强制拉升到指定比例的.在拉升的过程中造成了模糊.

那么如何能更好的支持Windows DPI缩放,使字体精确显示呢?

PS,不能改为使用WPF,根本不会用.

麻烦懂的朋友解答一下,谢谢.
...全文
603 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
willhuo 2015-02-10
  • 打赏
  • 举报
回复
额,你说的是图像放大吧,我以前纠结了好长时间才搞明白,放大得重绘才行。 好像C#中没有现成的东西
ttsffgg 2015-02-10
  • 打赏
  • 举报
回复
谢谢楼上几位的解答 真是个头疼的问题, 我看到网上很多人把windows不能良好支持高dpi归罪于第三方应用程序开发者懒得支持 但是我想问问,为什么苹果能够快速完成高DPI的支持呢? 在从低DPI升级到高DPI的过程中,苹果开发者需要自行解决类似于windows中控件放大比例,字体显示不全等问题吗?还是说苹果从底层已经提供了这些功能,一般开发者根本不需要为这些问题操心?
ttsffgg 2015-02-10
  • 打赏
  • 举报
回复
引用 1 楼 layershow 的回复:
Form 的 AutoScaleMode ?
试过了,好像不起作用
zhouzangood 2015-02-02
  • 打赏
  • 举报
回复
winnowc 2015-02-02
  • 打赏
  • 举报
回复
这是个麻烦的事情。模糊是因为默认情况windows把程序当作不关心dpi的 (not dpi-aware),使用DPI Virtualization拉伸。需要程序自己声明是能够自行处理dpi (dpi-aware),这样windows就把dpi的问题扔给了程序自己解决。 winform有个AutoScaleMode设置可以做这个事情。但是,它只能处理位置和大小,控件内部的内容/布局以及图片大小如果没考虑高dpi情况仍然可能不对。所以需要控件和程序作者都考虑到才可能正常缩放。 winform自带的控件是从.net 4.5.1开始才一点点的支持高dpi,使用EnableWindowsFormsHighDpiAutoResizing这个appsettings开启支持。如果用到第三方控件,那也需要第三方控件的支持。如果自己计算了一些位置/大小,还有使用的图片/图标也可能需要根据dpi来调整。
layershow 2015-02-02
  • 打赏
  • 举报
回复
Form 的 AutoScaleMode ?

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧