问题标签 [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.
c# - 您将如何计算最适合预定义区域所需的字体的磅值?
我有一个有趣的问题。我快到了,但很好奇其他人将如何解决它。我想在预定义的区域中显示一些多行文本。我不知道文本将是什么或区域有多大,因此必须通用编写该函数。您可以假设始终使用标准字体,但必须更改磅值。
假设您有一个函数,该函数将绘制在字符串参数中传递给它的文本。该函数有一个要在其中绘制的表单对象,并且还传递了一个矩形对象,该对象定义了表单上文本的边界区域。该函数需要在给定矩形中以适合的字体显示表单上的文本。对我来说,挑战是计算字体的大小,以使文本尽可能地适合文本,在具有最小空白的矩形中。
这两个方程可能有用:
还:
image - 图像 dpi 对网络浏览器有影响吗?
过去,我曾见过某些 Web 浏览器(主要是 Internet Explorer 7)中无法显示非 72 dpi 的图像的情况。然而,奇怪的是,我最近对此进行了测试,似乎 300dpi 的图像正在显示IE。
DPI 对网络不再重要吗?某些 DPI 的照片会不会在某些 Web 浏览器中显示?
user-interface - 对于相同的屏幕分辨率和 DPI 设置,IDE 控件的像素可以在两个操作系统之间更改吗?
假设在运行 Windows XP、Windows Vista 和 Windows7 的三台机器上打开了一个 GUI 应用程序。在所有三台机器中,屏幕分辨率和 DPI 设置都设置为相同的值。应用程序在屏幕上的显示方式在使用的像素数量和它们在屏幕上的位置方面是否会有所不同?
问这个问题的原因是:我正在使用基于位置的记录和播放方法进行 GUI 自动化。控件位置的任何变化都会影响 GUI 记录的回放。我想确保在 Windowx XP 平台上捕获的记录可以在 Vista 和 Windows7 平台上运行。
php - 如何使用 imagick 扩展更改图像的 dpi
我需要将所有上传的文件更改为 72 dpi。我正在使用 php imagick 扩展。
这是我尝试过的(我使用的图像是 300dpi):
这似乎没什么。图片正在上传,但保持在 300dpi
windows - 有没有一种简单的方法可以强制 Windows 使用固定的 DPI 值而不是当前的 DPI 设置来计算文本范围?
我想知道是否有一种简单的方法来计算字符串的文本范围(类似于GetTextExtentPoint32),但允许我指定要在计算中使用的 DPI。换句话说,是否有一个函数可以完全完成GetTextExtentPoint32的工作,但允许我将 DPI 作为参数传递,或者是一种“欺骗” GetTextExtentPoint32使用我可以指定的 DPI 的方法?
在你问“你到底为什么要这样做?”之前,我会尝试解释一下,但请耐心等待,这个请求背后的原因有些牵涉。
最终,这是一个自定义的自动换行算法,它将长字符串分解成更小的文本块,这些文本块需要整齐地适合具有复杂文本布局要求的 Crystal Report(它模仿警察用来提交刑事投诉的纸质表格,所以国家负责布局,而不是我们,它必须几乎完全匹配纸质表格)。
如果没有帮助,Crystal Reports 不可能正确布置此文本(文本必须适合一页上的一个小框,如果文本溢出小块,则后面是“标准大小”的续页),所以我编写了代码将文本分成多个“块”,这些“块”存储在报告数据库中,然后由报告单独呈现。
给定所需的尺寸(以逻辑英寸为单位)和字体信息,代码首先通过插入换行符使文本适合所需的宽度,然后根据文本高度将其分成正确大小的块。该算法使用 VB6 的TextHeight和TextWidth函数来计算范围,这将返回与GetTextExtentPoint32函数相同的结果(我检查过)。
当显示设置为 96dpi 时,此代码效果很好,但在 120 DPI 时会中断:有些行最终会包含更多的单词,而它们在 96 DPI 时会出现。
例如,“The quick brown fox jumps over the lazy dog”可能会中断如下:
96 DPI
敏捷的棕狐跳过
懒狗
120 DPI
敏捷的棕狐跳过
懒狗
此文本随后被 Crystal Reports 进一步分解,因为第一行不再适合报表上的相应文本字段,因此实际报表输出如下所示:
敏捷的棕狐跳过
懒狗
起初,我认为我可以通过将TextHeight和TextWidth的结果缩小 25% 来弥补这一点,但显然生活并不那么简单:似乎有许多舍入错误(可能还有其他因素?),所以与 96 DPI 相比,任何给定字符串的文本范围在 120 DPI 下永远不会大25%。我没想到它可以完美缩放,但有时甚至没有接近(在一项测试中,120 DPI 的宽度仅比 96 DPI 的宽度大 18% 左右)。
这不会发生在由 Crystal Report 直接处理的报表上的任何文本上:它似乎在缩放所有内容方面做得很好,因此报表在 96 DPI 和 120 DPI(甚至 144 DPI)。即使在打印报告时,文本也会完全按照屏幕上显示的方式打印(即看起来确实是所见即所得)。
鉴于所有这些,因为我知道我的代码在 96 DPI 下工作,我应该能够通过以 96 DPI 计算所有文本范围来解决问题,即使 Windows 当前使用不同的 DPI 设置。
换句话说,我希望我的FitTextToRect函数的结果在任何 DPI 设置下都返回相同的输出,方法是强制使用 96 DPI 计算文本范围。这一切都应该解决,因为我将范围转换回英寸,然后将它们与所需的宽度和高度(以英寸为单位)进行比较。我认为在像素和英寸之间来回转换时,96 DPI 产生的结果比 120 DPI 更准确。
我一直在研究 Windows字体和文本函数,看看是否可以滚动我自己的函数来计算给定 DPI 下的文本范围,查看GetTextMetrics和其他函数,看看这可能是多么容易或困难。如果有更简单的方法来实现这一点,在我开始创建自己的现有 Windows API 函数版本之前,我很想知道!
c# - C# WinForms 禁用 DPI 缩放
我有一个承载许多图像的 WinForm 应用程序。当我将应用程序放在 DPI 为 120 的 Win7 机器上时,它完全破坏了表单的外观。有没有办法禁用我的表单的缩放?
我知道这是不建议的,DPI 应该是无缝的并由操作系统处理。但是当涉及到皮肤应用程序时,图像不能很好地缩放。我没有为所有 DPI 变体创建图像的奢侈,所以请不要建议作为答案。
android - 三星 Galaxy S (480 x 854) 的屏幕布局问题
有谁知道我应该如何为与三星屏幕相同的手机布局我的应用程序。我的应用程序在小密度和正常密度下完美显示,但由于某种原因,hdpi 屏幕上的按钮略高,我必须点击它们上方才能让它们工作......这非常烦人。
我试图找出 DPI 大小等是什么,以便我可以调整它,但我没有任何运气......有什么想法吗?
提前致谢
c# - DPI 未正确缩放
我创建了一个自定义 UserControl,其功能与 numbericUpDown 非常相似,但具有各种增强功能。例如,它可以显示分数。但是,此控件的缩放比例不如表单上的其他一些控件,这迫使我的 UI 看起来很尴尬。
我玩弄了控件及其父控件的 AutoScaleMode。似乎没有任何效果,尽管将 AutoScaleMode 设置为 None 似乎比其他设置的影响更小。我还尝试手动减小控件相对于它旁边的下拉菜单的大小。它没有用。我几乎被困住了,我不知道如何应对。
有什么建议么?
我正在为 Win7 及更高版本启用 DPI 意识。
c# - 我可以告诉 Visual Studio 不要更改项目的 DPI 吗?
我在 2008 年开发了一个从 .NET 1.1 转换为 3.5 的项目。
如果我在 Windows 7 上打开项目,它会将所有内容的大小转换为 120dpi 大小。如果我然后以 96 dpi 打开它,它会变回来。有什么方法可以让我开发使其看起来都不错,并且如果在具有不同 DPI 的系统上打开 Visual Studio 不会更改大小?
这个问题在这里可能更好地表述/复制: 视觉工作室设计师 dpi 设置
或在这里: Visual Studio 和 DPI 问题
要明确我想要做的是防止控件在被具有不同 DPI 设置的多个开发人员使用时在设计器中调整大小。在我注意到这个问题的所有情况下,我一直在使用 .NET 1 或 .NET 2 项目升级为最初使用 Visual Studio 2008,现在是 Visual Studio 2010。
更新(以防有人想与@Ben 竞争积分):我有一个可以正确调整大小的表单,但窗口的大小会以编程方式更改。因为设计者不知道尺寸,所以如果使用不同 DPI 的开发人员触摸表单,窗口的大小就会不正确地调整。除了在运行时不缩放 UI 之外,有没有办法解决这个问题?
例如:我声明的窗口有两种尺寸,如果开发人员在设计时使用 120 dpi,它们可以正常工作:
如果有人在 96dpi 设计器中编辑表单,我只是想弄清楚我需要做什么才能避免出现可怕的设计回归。
c# - 创建 DPI 感知应用程序
我在 C# 中有一个表单应用程序。当我更改显示器的 DPI 时,所有控件都会移动。我使用了代码this.AutoScaleMode = AutoScaleMode.Dpi
,但它并没有避免这个问题。
有人有想法吗?