问题标签 [dpi]

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 投票
19 回答
329802 浏览

android - 在android中以编程方式获取屏幕密度?

如何在android中以编程方式获取屏幕密度?

我的意思是:如何找到当前设备的屏幕dpi?

0 投票
2 回答
1473 浏览

wxpython - 如何使用 wxPython 获取屏幕 DPI?

我可以得到屏幕分辨率

但我没有看到给我 DPI 的方法。

0 投票
2 回答
555 浏览

jquery - 以比屏幕更高的 DPI 创建画布对象?

我有一个画布对象,我需要能够以比本机屏幕分辨率更高的分辨率创建它。我正在使用 Flot 图形库,我需要输出一个图形,它在打印时和在屏幕上显示时看起来一样好。

我能想到的唯一方法是将画布尺寸放大 3 倍,然后缩放,但我认为当我去打印时这不会正常工作。

有任何想法吗?

0 投票
0 回答
166 浏览

android - 如何通知搜索建议视图的 DPI 显示为缩略图的图像?

我有一个使用 Android 搜索和自动搜索建议功能的活动。

我在活动中使用的缩略图都存储在 SD 卡上(有很多),并且都是 MDPI 分辨率。

在我的活动中使用它们时,这很好,因为我可以考虑这一点并适当地缩放,但是在搜索建议视图中,缩略图似乎被假定为当前 DPI,因此缩略图在 HDPI 设备上看起来很小。

我正在使用自定义检索搜索建议视图的缩略图ContentProvider并覆盖该openFile方法 - 但是我看不出这如何让我对设置 DPI 进行任何控制,因为它只返回一个通用的ParcelFileDescriptor.

是否可以使用ParcelFileDescriptor通知 DPI 的搜索建议视图?或者还有其他可能的方法吗?我自己无法直接控制它,因为 Android 框架处理数据到自动建议视图的映射。

我的openFile方法看起来像:

这似乎是我唯一可以控制请求它的自动建议管理器和显示它之间的文件的地方。

0 投票
4 回答
45583 浏览

wpf - 如何将 WPF 大小转换为物理像素?

将 WPF(与分辨率无关)宽度和高度转换为物理屏幕像素的最佳方法是什么?

我在 WinForms 表单(通过 ElementHost)中显示 WPF 内容,并尝试制定一些大小调整逻辑。当操作系统以默认的 96 dpi 运行时,我可以正常工作。但是,当操作系统设置为 120 dpi 或其他分辨率时,它将不起作用,因为就 WinForms 而言,报告其宽度为 96 的 WPF 元素实际上将是 120 像素宽。

我在 System.Windows.SystemParameters 上找不到任何“每英寸像素数”设置。我确定我可以使用等效的 WinForms (System.Windows.Forms.SystemInformation),但是有没有更好的方法来做到这一点(阅读:使用 WPF API 的方法,而不是使用 WinForms API 并手动进行数学运算)?将WPF“像素”转换为真实屏幕像素的“最佳方法”是什么?

编辑:我也希望在屏幕上显示 WPF 控件之前执行此操作。看起来可以让 Visual.PointToScreen 给我正确的答案,但我不能使用它,因为控件还没有父级,并且我得到 InvalidOperationException“此 Visual 未连接到 PresentationSource”。

0 投票
2 回答
593 浏览

android - hdpi 资产不再加载

我正在为我的游戏升级图形,以便在更高密度的设备上更好地显示。我创建了更高 dpi 的艺术品,将其添加到正确的位置(res/layout/drawable-hdpi)。我在清单中添加了以下内容:

它工作得很好......除了一张我忘记升级并从drawable-mdpi中提取的图像。我放大了该图像,将其放入 drawable-hdpi 并重新启动。现在游戏只从 mdpi 中提取图像。

我可以用 git 验证我对代码库所做的唯一更改,因为它正在工作是添加新的图像文件。出于故障排除的目的,我尝试删除添加的图像并将我的 git repo 重置为它工作时的状态。在这两种情况下,它仍然只是总是从 mdpi 加载。这让我相信这可能是模拟器的问题。我正在我的汽车上的上网本上开发这个,这有时会给我带来模拟器问题(通常需要一个小时左右才能启动并且在 Atom 上运行非常非常缓慢)。

任何人都知道什么可能会阻止游戏从 hdpi 中提取?

编辑

经过大量故障排除后,我仍然没有解决这个问题。看来我的应用程序可能在兼容模式下运行。它不是显示“邮票”大小,而是使用整个wvga800屏幕;但 getDisplayMetrics().density 返回 1.0。模拟器状态它设置为高(240)dpi,所以我假设密度应该> 1.0。

随机数据点:将 drawable-hdpi 目录更改为 drawable-large 会导致加载较大的图像。在那种情况下 getDisplayMetrics().density 仍然是 1.0,所以我无法进行正确的 px->dp 转换。

0 投票
1 回答
3145 浏览

.net - PrintDocument_PrintPage & Graphics.DrawImage 尺寸(英寸)

我正在尝试打印尺寸为 2x2 英寸的图像。根据分辨率创建了一个转换函数(英寸到像素)。然而,结果远不是 2x2 英寸,打印产生的图像几乎不能适合整张纸!我做错了什么吗?

0 投票
1 回答
3171 浏览

c++ - 以编程方式确定 Windows DPI 设置?

我们的一个不支持 dpi 的 MFC 应用程序有问题。
如果您将系统设置更改为高 dpi(例如 120 或 144 dpi),则任务栏上的应用程序图标看起来很糟糕。不幸的是,我们必须WNDCLASS为大型机注册我们自己的,并且WNDCLASS.hIcon您必须在会员中设置一个图标。LoadIcon该图标是使用该功能加载的。并且该函数尝试以标准尺寸加载图像(与返回的相同GetSystemMetrics(SM_CXICON)),对于 120dpi 来说,它是 40x40 像素。这很不幸,因为我们不提供该尺寸的图标。但是有一个解决方法:奇怪的是,dpi 虚拟化似乎对 120 dpi 无效,GetDeviceCaps(..., LOGPIXELSX)确实返回 120 dpi 并且GetSystemMetrics(SM_CXICON)返回 40。所以我们可以抓住它并以不同的大小加载图标。但是对于 144 dpi 它不起作用,因为现在虚拟化似乎生效了,我们得到 96 dpi 和 32 像素,这再次导致图标看起来非常难看。
我发现如果我只是将WNDCLASS.hIcon成员设置为NULL,图标就会显示得很好。但我想知道这是否可以,因为根据 MSDN:

hIcon
类图标的句柄。此成员必须是图标资源的句柄。如果此成员为 NULL,则系统提供默认图标。

那么即使我将该成员设置为NULL,我是否可以指望始终显示的图标?另一种方法是以正确的大小加载图标,但为此我必须知道系统实际上设置为 144 dpi。我的第一个问题就到这里了。有谁知道是否可以确定系统的 DPI 设置(从 dpi 虚拟化应用程序中)?请注意,我还考虑过做一些肮脏的事情,比如让一个 dpi 感知应用程序告诉我实际的 dpi 和类似的东西,但如果可能的话,我想避免这样的事情。

最好的祝福,

洪巴贡巴

更新:
我发现将WNDCLASS.hIcon成员设置NULL为不是一个好主意,因为随后大型机的图标被默认图标替换(即使它在任务栏上看起来很好......) - 我没有注意到在我的第一次测试。

0 投票
1 回答
2319 浏览

user-interface - Win32:在高 DPI 下的对话框中显示股票图标

我有一个对话框,我需要在其中显示标准信息图标。这是我的 RC 代码:

我按如下方式处理 WM_INITDIALOG 消息:

在 96 DPI 下一切正常:静态控件显示一个 32x32 像素的图标。

但是,当我切换到更高的 DPI(通过右键单击桌面,选择屏幕分辨率,然后单击使或其他项目变大或变小)时,图标无法缩放!由于其他所有内容都可以很好地缩放,因此该图标在视觉上看起来比相邻文本小得多。我希望在 144 DPI (150%) 上,图标尺寸将为 48x48 像素。我确实通过 XML 清单将我的应用程序声明为支持 DPI。

最糟糕的是,当我使用自己定制的图标(也来自 RC 文件)时,一切都可以完美缩放。此外,MessageBox使用标志调用的函数MB_ICONINFORMATION也会显示缩放版本的图标。

鉴于这些想法,我假设以下几点:

  1. 带有样式的静态控件SS_ICON可以显示缩放版本的图标。
  2. 包含标准信息图标的图标资源具有图标的缩放版本 (48x48)。

那我做错了什么?

0 投票
1 回答
784 浏览

windows - 如何检测使用的字体缩放模式?

在 Windows 7 的“自定义 DPI 设置”窗口中,有一个名为“使用 Windows XP 风格的 DPI 缩放”的设置。有谁知道如何检测此设置是否正在使用?