问题标签 [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.
c# - WinForms 应用程序生成 Windows 照片查看器会影响原始应用程序中的字体
我们有一个在 Windows 7 上运行的 WinForms 桌面应用程序,桌面设置为 150% 字体大小。我们使用 Process.Start() 启动查看器以显示存储在我们数据库中的文档。查看照片时,会启动 Windows 照片查看器。发生这种情况时,应用程序中的许多字体都会更改。菜单字体尤其受到影响。我认为这与 WinForms 库中的高 DPI 处理有关。但是,令我惊讶的是,启动 Windows 照片查看器会导致桌面发生变化,从而影响应用程序。125% 或 175% 的设置没有此效果。
有什么方法可以隔离我们的应用程序,一旦运行不受这种影响?
sdl - 如何获得 SDL2 中的物理显示分辨率?
我努力了
但在高 DPI 显示器上,它会返回虚拟屏幕分辨率。SDL_GetCurrentDisplayMode
做同样的事情。
那么,如何在高 DPI 显示器上也获得物理屏幕尺寸?
c# - 混合 WPF 和 winforms 项目 DPI 意识
我有一个同时使用 winforms 和 WPF 的 C# 程序,我正在努力让它在高 DPI 环境中工作。目前,如果我从解决方案中删除所有 WPF 项目并运行它,它会很好地缩放,但是一旦我重新添加任何 wpf(功能所必需),缩放就会失败并且 UI 变得不可用。
这似乎与之前的 SO 问题完全相同:DPI Scaling in .Net 3.5 in Mixed WinForms and WPF Application和Problems 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 下正确缩放有任何想法?
提前致谢
c# - 对具有不同 DPI 的屏幕使用正确大小的 WPF SplashScreen
我在我的 WPF 应用程序中使用SplashScreen功能(例如 400x200px PNG 文件)。在具有标准 DPI 的屏幕上,SplashScreen 可以正确显示,但在 Retina 显示器或其他高 DPI 屏幕上,它看起来非常小。是否可以提供更多的PNG资源(不同大小)并根据屏幕DPI选择一种?
我目前的实现(在App.xaml.cs
):
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 的废话只是分散注意力。
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 屏幕上看起来都很大。
Qt Designer 中是否有与设备无关的像素?
你建议用什么方法来解决这个问题?假设我在 96dpi 屏幕填充上需要 20 像素,但这在 240 dpi 屏幕上变成大约 50 像素。我是否必须从 C++ 代码中设置每个这样的维度?
我现在在 main 函数中使用这个技巧:
但是我不能/不想对每个维度都这样做,因为有大量的 UI 元素,有些有宽度,有些有填充等。分离 UI 和程序逻辑的整个想法都是徒劳的。
谢谢
javascript - jQuery 检测 DPI 变化
我现在尝试用 jQuery 检测 DPI 变化半天。
场景如下:
我有一个 MacBook Pro (Retina) 和一个连接到它的常规屏幕。当我将浏览器窗口从常规窗口移动到 MacBook 时,我想检测 DPI 变化。
显然像这样的事件
和
不要为此工作,因为分辨率只是在物理上发生了变化。
有没有办法实现这一点?
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
)。