问题标签 [highdpi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

c# - WinForms 应用程序生成 Windows 照片查看器会影响原始应用程序中的字体

我们有一个在 Windows 7 上运行的 WinForms 桌面应用程序,桌面设置为 150% 字体大小。我们使用 Process.Start() 启动查看器以显示存储在我们数据库中的文档。查看照片时,会启动 Windows 照片查看器。发生这种情况时,应用程序中的许多字体都会更改。菜单字体尤其受到影响。我认为这与 WinForms 库中的高 DPI 处理有关。但是,令我惊讶的是,启动 Windows 照片查看器会导致桌面发生变化,从而影响应用程序。125% 或 175% 的设置没有此效果。

有什么方法可以隔离我们的应用程序,一旦运行不受这种影响?

0 投票
1 回答
1442 浏览

sdl - 如何获得 SDL2 中的物理显示分辨率?

我努力了

但在高 DPI 显示器上,它会返回虚拟屏幕分辨率。SDL_GetCurrentDisplayMode做同样的事情。

那么,如何在高 DPI 显示器上也获得物理屏幕尺寸?

0 投票
4 回答
5224 浏览

c# - 混合 WPF 和 winforms 项目 DPI 意识

我有一个同时使用 winforms 和 WPF 的 C# 程序,我正在努力让它在高 DPI 环境中工作。目前,如果我从解决方案中删除所有 WPF 项目并运行它,它会很好地缩放,但是一旦我重新添加任何 wpf(功能所必需),缩放就会失败并且 UI 变得不可用。

这似乎与之前的 SO 问题完全相同:DPI Scaling in .Net 3.5 in Mixed WinForms and WPF ApplicationProblems getting WinForms to scale correct with DPI

我遵循了关于这些问题的建议,并尝试添加清单文件和提供的 dpi 感知代码。

我还将项目升级到 .net framework 4.6.1(从 4.0 开始)并包含 app.config 设置:<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />

这确实影响了程序的主外壳(所以不是在一个所有控件都被压扁的小窗口中加载,而是主程序窗口打开最大化并显示正常)但是,当我从主窗口输入任何 winforms 子表单或插件时,缩放失败。

当我输入任何 WPF 子表单或插件,或返回主屏幕时,这些会正确呈现。只有 winforms 功能无法正确扩展。

有没有人对如何让混合的 winforms/WPF 项目在高 DPI 下正确缩放有任何想法?

提前致谢

0 投票
0 回答
911 浏览

c# - 对具有不同 DPI 的屏幕使用正确大小的 WPF SplashScreen

我在我的 WPF 应用程序中使用SplashScreen功能(例如 400x200px PNG 文件)。在具有标准 DPI 的屏幕上,SplashScreen 可以正确显示,但在 Retina 显示器或其他高 DPI 屏幕上,它看起来非常小。是否可以提供更多的PNG资源(不同大小)并根据屏幕DPI选择一种?

我目前的实现(在App.xaml.cs):

0 投票
1 回答
226 浏览

c# - 为什么 WinForms 将我的图像绘制为 4 倍大小?

我正在使用 WinForms 创建一个 512x512 像素的图像,分辨率为 96dpi。初始化后,我OnPaint使用Graphics.DrawImage. 当我运行程序时,我得到的是如下所示的图像:本质上是一个 1024x1024 的图像,其中包含一些与我想要显示的内容模糊相似的 jung,除了它由 2x2 像素块组成,所有块都具有相同的相同颜色。这很奇怪。

有人可以帮我弄清楚发生了什么吗?这只发生在高 DPI 显示器上,该程序在普通显示器上运行良好。

在此处输入图像描述

更新 1:我明确地将进程设置为不感知 DPISetProcessDpiAwareness(_Process_DPI_Awareness.Process_DPI_Unaware);并明确调用DrawImage矩形,即

它没有帮助

编辑 2:打开 DPI 意识,我现在得到相同的垃圾,但大小合适:

在此处输入图像描述

编辑 3:终于明白了,工件是我在 CUDA 端错误渲染的结果。高 DPI 的废话只是分散注意力。

0 投票
0 回答
1191 浏览

c++ - QTDesigner 如何在高 DPI 显示器上工作?

我有一台 4k 显示器,并且安装了 Qt 5.6 RC + VS 2015 + Qt5Package。一切都设置好了,我可以设计和编译我以前在普通 DPI PC 上开发的应用程序,它运行良好。

但...

当我第一次layout.ui在 highdpi 屏幕上打开我的项目文件时,我看到主窗口的大小为 1000 x 500 像素。Qt Designer 中的窗口以 highdpi 显示,它很清晰,并且与编译应用程序时得到的内容相对应。但是,当您在 Qt Designer 中更改窗口或任何元素的大小时,它会使用屏幕上的绝对像素。因此,QtDesigner 中屏幕宽度的一半宽度转换为 2000 像素宽的窗口。这在 highdpi 机器上编译和运行正常,但是当应用程序在标准尺寸的屏幕上执行时,它是巨大的。

这会影响所有绝对大小的元素。

问题是,在低 DPI 设计和高 dpi 运行时,每个在线线程都解决了问题。这可以通过QT_DEVICE_PIXEL_RATIO. 但它不会反向工作,无论您在高 DPI 上设置的绝对大小在标准 DPI 屏幕上看起来都很大。

  1. Qt Designer 中是否有与设备无关的像素?

  2. 你建议用什么方法来解决这个问题?假设我在 96dpi 屏幕填充上需要 20 像素,但这在 240 dpi 屏幕上变成大约 50 像素。我是否必须从 C++ 代码中设置每个这样的维度?

我现在在 main 函数中使用这个技巧:

但是我不能/不想对每个维度都这样做,因为有大量的 UI 元素,有些有宽度,有些有填充等。分离 UI 和程序逻辑的整个想法都是徒劳的。

谢谢

0 投票
3 回答
13299 浏览

c++ - 如何使用 Qt 5.6 在高 dpi 上获得清晰的 UI?

我正在使用 4k 显示器进行开发,这很痛苦......

最后我设法设置了 QtDesigner,然后遇到了这个问题:

当您使用QT_AUTO_SCREEN_SCALE_FACTOR=1和编译带有单选按钮和其他基本小部件的应用程序时,它看起来在 4k 屏幕上缩放。否则控件的尺寸是正确的,正如预期的那样,它只是不清晰,而是像素化。

我使用 Qt 5.6 RC msvc2015 64bit 在 4k 屏幕上以 200% DPI 缩放在 Windows 10 Home 64bit 上运行,并尝试使用

截图

如果我使用

控件很清晰,文字大小还可以,但所有尺寸都小得多。

如何在高 DPI 屏幕上使控件清晰?

0 投票
2 回答
1450 浏览

javascript - jQuery 检测 DPI 变化

我现在尝试用 jQuery 检测 DPI 变化半天。

场景如下:
我有一个 MacBook Pro (Retina) 和一个连接到它的常规屏幕。当我将浏览器窗口从常规窗口移动到 MacBook 时,我想检测 DPI 变化。

显然像这样的事件

不要为此工作,因为分辨率只是在物理上发生了变化。

有没有办法实现这一点?

0 投票
3 回答
6061 浏览

c# - Windows 10 上的高 DPI 屏幕上的 WPF 应用程序模糊

WPF 应用程序是否通常在开箱即用的高 DPI 屏幕上正确缩放(无需进一步自定义清单等?)。我的理解是他们做的?

在笔记本电脑屏幕上查看时,我编写的两个 WPF 应用程序在我的新笔记本电脑(运行 Windows 10)上都显得模糊。通常笔记本电脑的主显示器设置为外部低 dpi 显示器,内置笔记本电脑面板的缩放比例为 125%。但是,无论是否插入低 dpi 显示器,都会出现模糊。

我认为这可能与我的两个应用程序的启动方式有关(通过主方法,而不是启动主窗口的默认代码模板),但我刚刚启动了 Visual Studio 2015 并生成了一个全新的 WPF带有项目模板的应用程序(空白表单上只有几个单选按钮),它也不能在我的系统上扩展到高 DPI。

值得一提的是,我已经在我的 Windows 副本上配置了“首选外部清单”注册表设置,以允许每个应用程序通过清单禁用高 dpi 缩放。(即HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide "PreferExternalManifest"=dword:00000001)。

0 投票
2 回答
993 浏览

python-3.x - 改善高 DPI 屏幕上 tkinter 字体的外观

在使用 tkinter 创建外观更现代的应用程序时,我使用 MS Word 来激发我的设计灵感。然后我注意到,只有当我在高 DPI 设备上使用该应用程序时,它才会看起来如此糟糕。

示例图像

有没有办法补偿并让它看起来一样清脆?

注意:“不要使用 tkinter”不在桌面上。