问题标签 [hidpi]

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 投票
3 回答
881 浏览

linux - xrandr 两个屏幕分辨率不同,没有不可见区域

更新:问题已经解决了。它一定是在更新 xrandr、Xorg、nvidia 或 intel gpu 驱动程序或其他任何相关的东西时发生的,但它又可以正常工作了!毕竟不是我的错……

我的笔记本电脑有一个 4K (3840x2160) 屏幕(双 GPU,nvidia-prime),有时我想在 HDMI 端口上连接我的全高清电视来观看视频。我更喜欢电视不要镜像我的 4K 屏幕。

所以我启动 arandr 并启用 HDMI 输入。在我之前安装这台笔记本电脑(Linux Arch)时,我的 4K 屏幕被限制为 1920x1080,所以 3/4 的屏幕无法使用,即使没有镜像,但我会只使用镜像观看受限的视频到 4K 屏幕的 1/4,即完整的电视。在我新安装的这台笔记本电脑(同样是 Linux Arch)上,我的桌面似乎调整为 5760x2160,这使得电视只显示屏幕的上半部分,并且由于视频应用程序认为我的屏幕是 1920x2160 而无法正确显示视频。

所以这些情况都不是我想要的。我希望它能够像在 Windows 中一样工作(或者就像我在台式电脑上安装的 Arch 一样,左侧有一个全高清屏幕,右侧有一个 1:1 2K 屏幕,它在那里工作得非常好):一个左边4K屏,右边一个Full HD屏幕,鼠标不能从左到右穿过屏幕下方,所以桌面左边是3840x2160,右边是1920x1080,右边屏幕有相同的上边缘,因此当我转到右侧屏幕时鼠标保持在顶部。

当我试图自动执行此操作时,我希望它可以与 xrandr 一起使用(我已经编写了一个可以工作的 udev 脚本),但即使使用 xrandr,我似乎也无法正确设置参数。

我尝试了很多东西,但我似乎误解了选项或其他东西,因为无论我尝试什么,它都没有像我预期的那样工作。

我试过的最简单的方法就是:xrandr --output HDMI-1-0 --auto --right-of eDP-1 --mode 1920x1080 --pos 3840x0。我尝试添加--fb 1920x1080。它似乎不起作用。

谁能帮我理解它,甚至可以帮我配置它?

编辑:我不知道它是否重要,但我使用 i3。

编辑:如果我将 4K 屏幕的分辨率更改为 1920x1080,则镜像效果很好。这是唯一可用的方法,但这仍然不是我想要的。

编辑:这太奇怪了,我刚刚做了xrandr --output eDP-1 --auto --output HDMI-1-0 --auto --right-of eDP-1,我的电视现在显示一个空桌面,但我的鼠标仅限于 4K 屏幕,当我在左上角区域时,鼠标也出现在电视上......所以感觉就像电视显示了 4K 屏幕的一部分,但鼠标在左上角。

编辑:我试过的另一件事不起作用:xrandr --output eDP-1 --mode 3840x2160 --fb 3840x2160 --output HDMI-1-0 --mode 1920x1080 --fb 1920x1080 --right-of eDP-1 xrandr: specified screen 1920x1080 not large enough for output eDP-1 (3840x2160+0+0) xrandr: specified screen 1920x1080 not large enough for output HDMI-1-0 (1920x1080+3840+0)

0 投票
1 回答
69 浏览

cocoa - NSImageView 72dpi 图像在 HiDPI 显示器上模糊

我正在将 72dpi 图像加载到 NSImageView 中,它在 HiDPI 显示器上看起来非常模糊。它如何才能呈现完美清晰?

我发现我可以通过将这个完全无意义的覆盖添加到 NSImageView 来改进,但它并不能完全修复它。

这是默认情况下的外观:

默认

使用自定义覆盖:

改善

如预览中所示:

预览

0 投票
1 回答
698 浏览

c++ - 使用 HidD_GetInputReport(..) 检索 XBOX ONE 按钮状态

我正在尝试通过 Microsoft HID API 与 XBOX ONE 控制器交谈,而不使用XINPUT。我目前能够通过使用HidD_SetOutputReport(HANDLE, VOID*, ULONG). 但是我一直坚持使用HidD_GetInputReport(HANDLE, VOID*, ULONG)或使用和不使用和使用Windows 事件ReadFile() / ReadFileEx()创建 HANDLE 来读取按钮值。FILE_FLAG_OVERLAPPEDOVERLAPPED

在以下文章https://github.com/quantus/xbox-one-controller-protocol的帮助下,我已经对 USB URB 协议进行了逆向工程。主要目标是克服 XINPUT 开销并编写一个灵活的框架,以便我也可以集成其他游戏手柄。

这就是我完成的:

  1. 我已经通过 USB 将游戏手柄连接到我的电脑(这样我就可以读取从设备发送和接收的所有 USB 包)
  2. 我使用SetupDiGetClassDevs(...)SetupDiEnumDeviceInfo(...)和找到了控制器SetupDiEnumDeviceInterfaces(...)的路径SetupDiGetDeviceInterfaceDetail(...)
  3. 我已经使用创建了设备的句柄HANDLE gamePad = CreateFile(path, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL)
  4. UsingHidP_GetCaps(HANDLE, HIDP_CAPS*)似乎没有返回有效数据,因为它报告的 OutputReportByteLength 为 0,但我能够发送大小为 5(打开)和 9(设置震动马达)的输出报告
  5. 所有输入和输出数据(至少按钮和 Rumble 电机)似乎都遵循以下模式
  1. 有了这些信息,我就可以让马达和触发器按照我的意愿发出隆隆声

例如:我的两个输出隆隆声数据包看起来像这样(使用脉冲长度来脏地打开和关闭电机): Device Monitoring Studio URB 视图中的输出包 这会打开所有电机,其中隆隆声电机的速度为 0xFF,触发器的速度为 0xF0。我是这样做的:

现在我的问题

查看来自控制器的输入包,您似乎需要创建一个大小为 0x0E = 14 的缓冲区,ZeroMemory 它(或者像 MSDN 建议的那样将第一个字节写入 0)然后调用HidD_GetInputReport(HANDLE, buffer, 14) Device Monitoring Studio URB 视图中的输入包

所以我所做的是调用HidD_FlushQueue()以确保下一个包是输入包。然后我插入一点延迟,以便能够更改一些控制器值。之后我尝试读入一个 BYTE 数组,HidD_GetInputReport(HANDLE, cmd_in, 14)但函数总是失败GetLastError() == 0x00000057 // ERROR_INVALID_PARAMETER

由于 HID 能够过滤包,因此可能需要分配一个比预期大一字节的缓冲区,并将所需的报告 ID 传递到位置 0 的缓冲区。这就是我所做的:

仍然没有成功。由于该HidP_GetCaps(...)函数报告了 16 的输入报告(但我不相信这一点,因为它已经用 0 的输出报告大小欺骗了我)我尝试扫描许多缓冲区大小:

仍然没有成功。根据特殊要求的输出格式和错误的HidP_GetCaps(...)读数,我怀疑 XBOX ONE 游戏手柄驱动程序需要输入缓冲区中已经存在的特殊标头(据我所知 HidD_GetInputReport(...) 只是调用用户/内核模式驱动程序调用返回;因此驱动程序可以自由地执行检查并拒绝发送给它的所有数据)

也许那里的任何人都知道如何为 XBOX One 控制器调用 HidD_GetInputReport(...)

我知道可以检索输入数据,因为SimpleHIDWrite能够看到按钮状态。即使格式完全不同(例如,两个触发器组合在一个字节中。在 USB Packed 中,每个触发器都有自己的字节):

SimpleHIDWrite Xbox ONE 控制器

我还应该提到,HIDWrite 无需按任何按钮即可查看数据!查看来自 SimpleHIDWrite 的日志,它看起来像是RD0015 个字节的数据中读取的,有一个 16 字节的数组和 00 处的元素 0(在我的应用程序中不起作用)。或者它只是转储所有传入的数据。如果是,这怎么可能?这对我来说也是一个选择!

0 投票
1 回答
143 浏览

c++ - SDL_GetCurrentDisplayMode 未返回正确的窗口大小

我的问题是如何获取当前的窗口大小?

它需要能够获得全屏或窗口的窗口大小。

我正在使用 SDL2、Glad、OpenGL #ver 130。在窗口 10 上进行缩放。

我将窗口初始化为 1280x720。

它是一个 OpenGL 上下文启用窗口。

我想要的只是获取当前的窗口大小。我预计它是 1280x720。

终端输出。

然而我得到一个奇数,1707x960。我不认为这是正确的。

0 投票
0 回答
34 浏览

linux - 为 X 托盘设置环境变量

我想为整个系统(处理 HiDPI)设置环境变量,但负责 X 托盘图标的进程除外GDK_SCALEGDK_DPI_SCALE我正在努力弄清楚负责该工作的较低级别的流程是什么。我有 Lightdm + i3 但我不确定哪个负责 X。

0 投票
2 回答
792 浏览

python - QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling, True) 在 python 上根本不起作用

我一直在用 PySide2 和 Python 3.8 编写一个应用程序,我试图启用 HiDPi,我发现在脚本的开头添加了这个

应该做的伎俩。

但这对我不起作用。该窗口以常规 dpi (96ppp) 显示,而整个系统和应用程序以 125% (120ppp) 运行。我做错了吗?

代码:

截图(上截图很难体会到不同之处,见谅): 在此处输入图像描述

系统规格:Windows 10 Pro 64 位 Python 3.7.8 PySide2 5.15.2

0 投票
1 回答
40 浏览

java - Swing HiDPI 边框渲染(Windows 10/OpenJRE 11)

我维护一个旧的 Swing 应用程序,该应用程序使用自定义边框实现作为窗口装饰,并具有look and feel扩展MetalLookAndFeel的实现。look and feel覆盖并安装自initComponentDefaults(UIDefaults table)定义边框"RootPane.frameBorder"等等。

自定义边框本身通过实现将 32 行预定义颜色水平绘制在一起paintBorder(Component c, Graphics g, int x, int y, int width, int height)。当display scalingSettings > Display > Scale and layout. 当display scaling设置为 125% 或更高时,将无法正确绘制边框,它在应该一起绘制的线条之间有白线。

Fix scaling for appsinAdvanced scaling settings似乎不影响边框绘制。

我用AdoptOpenJDK OpenJDK 11.0.4+11 x64. 我希望 Swing 也能扩大线条,如字体等。

为什么会这样?如何解决这个问题?

边界实现:

0 投票
1 回答
43 浏览

linux - 在 JavaFX 应用程序中检测 HIDPI 设置

JDK 15目前,我JavaFX 15GNOME/WaylandLinux 上使用 4K 显示器。生成的应用程序似乎无法检测到我的 200% 高档设置。

在研究时,我提出了这个建议迁移到 JavaFX 11 的 bug 票,它不再有效。

我应该如何检测并强制升级我的 JavaFX 应用程序?

0 投票
0 回答
166 浏览

.net - Winforms 高 DPI 不缩放字体大小

在我的 .NET 4.7 Windows 窗体应用程序中,我按照此处的说明配置了高 DPI 支持。

我像这样配置我的 Windows:

TableLayoutPanel在表单和所有容器上使用并保留默认字体设置来布局表单。只有我的控件 ( Label, Button) 设置了自定义字体。

当我更改显示的比例因子时,表单、布局和控件都会相应地缩放。但是字体大小没有缩放;文本的大小保持不变。

制作 WinForms 自动缩放字体以及其他所有内容需要什么?

100% 缩放:

100% 缩放

150% 缩放 - 控件已调整大小但字体大小保持不变:

150% 缩放 - 控件已调整大小但字体大小保持不变

作为参考,这是我的应用清单:

和我的 app.config:

0 投票
1 回答
230 浏览

gnome - 通过 GUI 设置 GNOME 显示比例究竟修改了什么?

通过“GNOME 设置”( gnome-control-center display) 将显示比例设置为 200% 后,我scaling-factor通过命令行检查:

如您所见,scaling-factor仍然是 1 (100%)。那么通过GUI设置GNOME显示比例究竟修改了什么?