标签: hidpi

如何在Windows应用程序清单中将dpiAware属性设置为Visual Studio中的"每个监视器"?

我需要能够将应用程序清单中的dpiAware属性设置为"每个监视器".属性中的可用选项仅用于启用或禁用DPI感知.这些设置都不适合我.如果我没有在exe中嵌入清单,那么我可以获得我想要的应用程序行为,然后手动编辑清单.我想自动生成并嵌入清单.有什么我想念的吗?(我使用的是Visual Studio 2013.)

manifest dpi highdpi visual-studio-2013 hidpi

15
推荐指数
3
解决办法
2万
查看次数

QGraphicsItem未呈现为HiDPI

在Qt地图应用程序(QGIS)中,地图画布是QGraphicsItem.我们不使用任何OpenGL,每个元素都使用QPainter渲染.

除地图画布外,我们的应用程序在HiDPI上正确显示.

查看地图中的像素线:

在此输入图像描述

我看了什么:

  • 关于HiDPI的 Qt doc.已经做了什么(mac上的info.plist,使用浮点签名用于painter方法)
  • 关于Qt 的错误报告,但它似乎与OpenGL和项目缓存有关,我们不使用它.

与画家,我们正在使用QPainter::Antialiasing.

在这里发布代码并不容易,但这里是一个链接到渲染行的源代码.

我一直试图做一个最小的再现例子,但我仍然在这里失败.

提示是,只要鼠标位于地图画布上,光标的大小就会加倍(它太大).我会说大约是我设备像素比的 2倍.

我不确定这是一个只有Mac的问题(它似乎也发生在Linux上,但不是在Windows上).关于可伸缩性的Qt文档声明Mac以不同方式处理它.

我真的不知道该寻找什么,我希望得到一些提示.

qt high-resolution qgraphicsview qgraphicsitem hidpi

9
推荐指数
0
解决办法
95
查看次数

HiDPI 显示器上的 Gtk.Image

我使用Gtk.Image由a支持的 aGdkPixbuf.Pixbuf来显示照片。我缩放照片以适应可用空间以响应size-allocate父小部件的信号。问题是在 HiDPI 显示器上,每个维度都是逻辑像素而不是设备像素,因此会发生以下情况:

  • 如果我缩放GdkPixbuf.Pixbuf到我从size-allocate信号中获得的尺寸,照片会占用所需的物理空间,但它只使用显示器分辨率的一半(假设设备像素与逻辑像素的比率为 2:1)。
  • 如果我缩放GdkPixbuf.Pixbufget_scale_factor()我从size-allocate信号中得到的维度的倍数,那么照片将占据物理空间的两倍(即,它无法放入窗口中)。

我怎样才能让 GTK 知道Pixbuf我提供给图像的对应于设备像素而不是逻辑像素?

更新:这是我尝试过的(这些是我没有任何缩放的简化示例,只是尝试显示未缩放的图像):

尝试 1:

    image = Gtk.Image()
    image.set_from_file("subpixel.png")
Run Code Online (Sandbox Code Playgroud)

尝试 2:

    surface = cairo.ImageSurface.create_from_png("subpixel.png")
    image = Gtk.Image()
    image.set_from_surface(surface)
Run Code Online (Sandbox Code Playgroud)

尝试 3:

    pb = GdkPixbuf.Pixbuf.new_from_file("subpixel.png")
    image = Gtk.Image.new_from_pixbuf(pb)
    self.add(image)
Run Code Online (Sandbox Code Playgroud)

尝试 4:

    pb = GdkPixbuf.Pixbuf.new_from_file("subpixel.png")
    surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, pb.get_width(), pb.get_height())
    context = cairo.Context(surface)

    Gdk.cairo_set_source_pixbuf(context, pb, 0, 0)
    context.paint()

    image = Gtk.Image()
    image.set_from_surface(surface)
Run Code Online (Sandbox Code Playgroud)

pygtk gtk3 hidpi

8
推荐指数
1
解决办法
347
查看次数

hidpi显示器上的Android模拟器?

我在安装了KDE Neon的笔记本电脑上运行android模拟器26.1.3.KDE Neon是基于Ubuntu 16.04和最新KDE的发行版.我的笔记本电脑的屏幕分辨率是14"3840X2160.物理DPI == 315.在KDE'系统设置' - >'字体' - >'强制字体DPI'设置为196.

我在ADV管理器中启动了一个Nexus_5X_API_26仿真器实例.设备配置文件:

hw.lcd.width = 1080
hw.lcd.height = 1920
hw.lcd.depth = 16
hw.lcd.density = 420
Run Code Online (Sandbox Code Playgroud)

模拟器显示如下.怎么纠正这个?

在此输入图像描述

android emulation dpi hidpi

7
推荐指数
1
解决办法
1495
查看次数

如何让Java 9在HiDPI显示器上使用更高分辨率的图像?

我下载并安装了最新的Java 9早期版本,并且很高兴地发现Windows上的Java Swing应用程序现在可以以正确的大小呈现组件.使用HiDPI显示器的客户不再需要以预期宽度和高度的一半使用我的应用程序.

但是我注意到在我的Swing应用程序中,我自己的图标只是缩放到宽度和高度加倍,使它们看起来很锯齿.

我确实拥有正常尺寸(例如foobar.png)和双倍宽度/高度(例如foobar@2x.png)的全套图标.我使用Apple命名约定.

如何让Java 9在可用的情况下轻松找到并使用图像的更高分辨率版本,而无需手动编写代码?

代码示例总是让问题更清晰,Java 9还有一个多分辨率图标类,我可以使用它来编译和运行以下代码吗?

import javax.swing.*;

public class ScratchSpace {

    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        SwingUtilities.invokeLater(() -> {
            JFrame frame = new JFrame("I work in HiDPI!");

            // can I replace the following line with some magical new method that automatically loads the same icon at multiple resolutions
            // so that Swing chooses the correct one when rendering, depending on the current scale of the current display?
            Icon icon = new IconWithMultipleSizes("foobar.png"); …
Run Code Online (Sandbox Code Playgroud)

java macos swing java-9 hidpi

6
推荐指数
1
解决办法
995
查看次数

Netbeans在4K屏幕上缩放

我有一台新的4K显示器,一切看起来都很棒,但使用NetBeans进行编码很困难.控件非常小,java框架看起来非常小.

我已经看到一些有关此问题的Stackoverflow帖子,他们说我应该在首选项文件中添加一行,以便禁用hi-dpi模式,但我的java框架仍然很小.

java scaling netbeans hidpi

6
推荐指数
3
解决办法
2780
查看次数

使用LightDM + XMonad在NixOS上进行DPI缩放

我已经将HiDPI笔记本电脑上的xserver配置简化为:

  • displayManager:lightdm(自动登录,不打招呼)
  • windowManager:xmonad
  • desktopManager:无(xterm已禁用)

除了在某些地方进行DPI缩放外,一切都工作正常。具体来说:光标大小和默认的 tty字体都很小。由于我的X设置(如下所示),应用程序-终端模拟器,Firefox等-可以很好地缩放。

游标大小以及随之而来的缓慢运动是最大的痛苦。

所以我的问题是:为什么在某些地方而不是其他地方会看到适当的缩放比例?光标大小和其他“核心”显示内容是由什么引起的?

我做过/尝试过的东西:

services.xserver.dpi = 180;(设置xserver标志)

?.Xresources设置

Xft.dpi: 180
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
Run Code Online (Sandbox Code Playgroud)

export GDK_SCALE=2

export GDK_DPI_SCALE=0.5

export XCURSOR_SIZE=32

export QT_AUTO_SCREEN_SCALE_FACTOR=1

相关(?)GH问题:


使用NixOS 18.03

x11 xserver nixos hidpi

6
推荐指数
1
解决办法
756
查看次数

在 Java Swing 中从原始图像生成 HiDPI ImageIcon

我有一个应用程序,它将使用 JLabel 和图标大小为 32x32 的 ImageIcon。

我现在想使用 64x64 图像,加载它并将其大小调整为 32x32(如果 DPI 较低),否则将其用作高 DPI 图像。

调整大小很容易,这个技巧的例子如下:

ImageIcon icon = ...
Image lowRes = icon.getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH);
return new ImageIcon(lowRes);
Run Code Online (Sandbox Code Playgroud)

但是,我无法找到将 ImageIcon 设置为高 DPI 图像的方法。

我尝试过使用 MultiResolutionImage 但没有成功。

编辑:尝试以天真的方式使用 MultiResolutionImage:

private ImageIcon loadIcon(String iconName)
{
  ImageIcon icon = new ImageIcon(getClass().getClassLoader()
                       .getResource("res/icons/toolbar/" + iconName));
  BaseMultiResolutionImage baseMultiResolutionImage = new BaseMultiResolutionImage(
    icon.getImage().getScaledInstance(32, 32, Image.SCALE_SMOOTH),
    icon.getImage()
  );
  return new ImageIcon(baseMultiResolutionImage);
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

2019-06-11 14:00:45,962 ERROR [AWT-EventQueue-0] Catch.all - Uncaught exception on [AWT-EventQueue-0]: Invalid Image variant
java.lang.IllegalArgumentException: …
Run Code Online (Sandbox Code Playgroud)

java swing hidpi

6
推荐指数
2
解决办法
1680
查看次数

Intellij 2017.2无法扩展

更新至2017.2后,Intellij IDEA无法在Dell Ultrasharp U2415b上正确扩展.图标非常大,工作空间非常小.

我已经检查过,Intellij用HiDPI支持改变了一些东西.

有人遇到同样的问题吗?

intellij-idea hidpi

5
推荐指数
1
解决办法
3177
查看次数

对于Java 9应用程序,如何在Windows上禁用缩放UI?

Java 8中没有适当的HiDPI支持.

Java 9中,JavaFx应用程序正确扩展到它们所在的监视器.例如,如果我的监视器设置为150%的缩放,Java应用程序将缩放到150%.

见:http://openjdk.java.net/jeps/263

但是,出于测试目的,我需要能够在Windows 10中使用java.exe标志禁用扩展.如何实现此目的?

另外,也许我可以在应用程序本身内以编程方式禁用(并重新启用)?

scaling compiler-flags java-9 hidpi

5
推荐指数
2
解决办法
1369
查看次数