问题标签 [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 回答
3204 浏览

java - 特定面板的 jdk 9 高 dpi 禁用

使用 JDK 9,我的 Swing 应用程序在具有 4k highdpi 和正常 1080p 正常 dpi 的 Windows 上运行良好。标签、组合框等都看起来不错,并且在 4k 屏幕上按比例放大。但我的 JPanel 也是如此,我在其中绘制自定义图像。我可以禁用这个 JPanel 的缩放来自己处理绘图吗?我正在使用 apache-commons 双三次插值来绘制更高未缩放分辨率的更多细节,但由于它是开箱即用的,我只有“正常”尺寸来绘制。

亲切的问候

0 投票
1 回答
1222 浏览

delphi - 如何让 Delphi XE2 在 200% 文本大小的 4k 显示器上看起来不错?

我有新的戴尔 XPS 15 Kaby Lake 版本,分辨率为 3840x2160,文本大小设置为 200%。现在,Delphi XE2 看起来很糟糕,有些部分:
或者我尝试通过它的快捷方式在属性->兼容性中设置各种设置,我也尝试搜索互联网,但我只发现人们关心他们的应用程序的外观,但是我们的应用程序看起来不错。问题仅在于 Delpi XE2 看起来很糟糕,无法在我的笔记本电脑上使用。

任何帮助如何轻松修复它?

编辑:我安装了 Windows 10。

0 投票
1 回答
57 浏览

windows - 我可能用“禁用显示缩放”修复了什么错误?

我继承了一个现在必须在 Windows 10 上运行的遗留应用程序。在测试期间,我们发现程序的一部分(它是作为工具栏放置的子窗口)在程序启动时只会部分绘制——超过一半的工具栏的右侧只会绘制黑色。在运行时,修复是调整整个窗口的大小,这将调整/重绘工具栏窗口的大小。我们最终发现,如果我们设置“禁用显示缩放”似乎可以完全防止该错误(到目前为止测试的置信度刚刚超过 1 万分之一,这对我来说已经足够了)。

问题是:

这个错误的发生概率可能在 1/12 到 1/20 之间(我从我们对程序的自动测试的视频中确定,其中涉及 185 次错误发生的机会。没有发现发生的模式)。我从来没有处理过这样的错误,所以我想知道:鉴于错误的明显随机性和修复,发生了什么?Windows 为“高 DPI”而升级的位图渲染与布置工具栏的功能之间的竞争条件?

0 投票
1 回答
296 浏览

c# - WinForms 窗口在遇到异步调用时更改尺寸

我有一个多年前的 WinForms 项目,并且已经改装了异步事件处理程序:

此方法内部是一个异步调用:

当程序在正常分辨率屏幕上运行时,它会按预期运行。但是,当在高 DPI 屏幕上运行时,窗口的尺寸——以及所有子控件的尺寸——一旦遇到内部异步调用就会跳转到一半大小。就好像程序突然在兼容模式下运行或缩放已被禁用。

目前,为了调试问题,该GetProjectTemplateFile方法简单地包括

GetProjectTemplateFile是否执行异步操作没有区别。

如果我注释掉该异步调用,GetProjectTemplateFile那么程序会按预期运行,而不会出现任何维度跳跃,即使事件中还有其他异步调用CellClick

我已经尝试附加.ConfigureAwait(true)到异步调用,这没有区别。也不会与 . 同步运行调用.GetAwaiter().GetResult()

谁能解释为什么窗口的尺寸会随着这个特定的异步调用而改变,和/或如何防止这种情况发生?

更新
根据请求,这是一个引发解释行为的代码示例。我可以看到这里没有发生任何异常,但我向您保证,正是这段代码导致了解释的行为。

其他一些可能相关的信息:

  • FormBorderStyle窗口是“FixedToolWindow ”
  • 窗口在启动方法中被赋予了明确的宽度
  • AutoSize= 假
  • AutoSizeMode= 只成长
  • 正在开发它的计算机没有具有新缩放逻辑的 Windows 10 1703 (Creator's) 更新
  • 如果GetprojectTemplateFile方法不是异步的,有签名,public ProjectTemplateFile GetProjecttemplateFile(...)那么就没有问题。仅当方法调用为异步时,此问题似乎才存在 - 即使我将其设为阻塞调用。

更新 2:
我找到了导致此问题的特定代码行:

内部异步调用GetProjectTemplateFile调用 API,然后检查响应:

如果我注释掉MessageBox.Show(...)呼叫,那么一切正常,没有缩放问题,也没有尺寸跳跃。

但是当MessageBox.Show(...)呼叫就地时就会出现问题。

此外,API 以 200(OK)响应,因此 MessageBox 代码甚至没有被使用。我的猜测是 JIT 编译器认为这是一种可能性,所以......它重新呈现表单?

此外,重要的是,此代码不在表单的代码隐藏中,它在一个类中,该类在其构造函数中为表单提供了一个实例。

0 投票
0 回答
1431 浏览

windows-subsystem-for-linux - 在 Windows 上模拟 bash 时 Cmder 未正确换行

不久前,我将这个问题发布到 Cmder GitHub 页面。两周后,它仍然没有得到答复,所以我希望在这里碰碰运气。

基本上,我在运行 bash 时在 Cmder 中调整窗口大小时看到了奇怪的行为。

这是我发布的问题:

要重现,打开 Cmder 并最大化窗口:

  1. 在模拟 bash 控制台(Windows 上的 Ubuntu 上的 Bash)时,缩小窗口大小,以便命令行(即PS1环境变量)换行到下一行。
  2. 运行命令(可以是简单的Enter击键,只要尊重 1.)。
  3. 最大化窗口大小,然后键入比先前缩小的窗口更长的命令。线应该环绕自身。

任何人都可以重现这种行为吗?(运行 Microsoft Windows [版本 10.0.15063])

我在模拟 cmd.exe 时没有观察到相同的行为。

更重要的是,我在运行“Windows 上的 Ubuntu 上的 Bash”应用程序时没有观察到这种行为。

我还尝试查看在 ConEmu 上是否观察到相同的行为。当我调整屏幕大小时,我收到消息:“已达到最大控制台大小......减少实际控制台属性中的字体大小”,我猜这可能与我的高 DPI 屏幕有关。最重要的是,我得到了与 Cmder 中相同的行为。

非常感谢您对此的任何帮助:D

0 投票
1 回答
510 浏览

winapi - Windows 10 上的 Win32 API 窗口应用程序 Retina 高 DPI 屏幕问题

主题:简单的基于 C++ Win32 API 的单窗口应用程序。请参阅下面的代码。计算机是本机安装 Windows 10 的 MacBook Retina。

问题:标题栏(窗口的非客户区)中的最小化/最大化/关闭按钮在鼠标悬停事件中表现不正确。每个按钮仅在鼠标光标移动时突出显示,而按钮应始终突出显示,直到鼠标指针离开按钮区域。

问题:问题是什么?Win10清单?

编码:

0 投票
1 回答
228 浏览

delphi - 如何在高 dpi 值下获得视觉继承?

我有以下TForm1带有两个按钮(BitBtn)的示例表单:

基本形式

此外,我还有第二种形式TForm2,它是从第一种形式派生的。第二个按钮向左移动并添加了另一个按钮:

派生形式

在运行时(Windows 7),第二种形式如下所示:

标准字体大小

如果我将字体缩放比例更改为 125%,我的表单如下所示:

增加字体大小

不知何故,新按钮的位置和大小都错误。 我能做些什么呢?

我使用了以下.dfm文件(缩短):

类文件在设计器生成时保持不变。它们不包含相关代码。

0 投票
2 回答
152 浏览

windows - windows 10上windbg中的小/小和重叠按钮、工具箱等

我在 windows 10 上安装了 windbg(例如在 windows 7 上运行良好) 工具栏太小,一些文本框与其他对象重叠。

有些地方的文字也太小了,我通过更改windbg的字体大小解决了它,但它没有解决工具箱和文本框的问题

我认为这个问题可能与windbg无关,它会在其他应用程序中重现

任何帮助,将不胜感激。

你可以在这里看到一个截图:

https://www.dropbox.com/s/hxhak71ruokb01e/windbg.PNG?dl=0

谢谢!

0 投票
0 回答
621 浏览

cmake - 从 CMake 覆盖高 DPI 缩放

我正在 Windows 10 上编译和构建一个 C++ OpenCV 应用程序,它显示了一些图像。在具有屏幕缩放的系统上运行时,我想禁用操作系统缩放并以原始/真实大小显示像素。

我想覆盖高 DPI 缩放行为并将其设置为“应用程序”。

我可以通过以下方式对.exe文件执行此操作:右键单击-> 属性-> 兼容性选项卡并选中复选框。:

在此处输入图像描述

作为 CMake 脚本的一部分,我是否可以使用 CMake 命令或命令行工具来执行此操作,以便我选择的每个目标都使用此设置构建?

0 投票
1 回答
10329 浏览

bash - xrandr 大小 1920x1080 在可用模式 ubuntu 中找不到

我正在使用具有 4k 显示屏和 ubuntu 作为操作系统的戴尔 XPS 15 9550。我需要使用 Matlab,但我(一如既往)有一个 HighDPI 问题。目前我正在使用 r2017a 版本的 Matlab。

为了解决这个问题,我尝试使用一个小脚本来避免这个问题:

脚本.sh

当我启动它时,我从控制台收到此错误:

“在可用模式中找不到尺寸 1920x1080”

所以我做了:

输出:

在那之后:

最后

我使用 xrandr -q 找到了 eDP-1-1。这里的输出

所以我认为我已经做对了所有事情,但是脚本仍然不起作用,控制台仍然给我同样的错误。

我做错了什么?