我不知道这是否属于StackOverflow或其他一些SE网站,但这里有.
我有一个PSD设计我有一个iOS开发团队变成了Retina iPad应用程序.但是,此设计是在默认的72 dpi中进行的.
开发团队现在表示设计应该是264 dpi(与Retina iPad相同) - 以及非Retina版本的132 dpi版本.
这让我感到困惑,因为我的印象是dpi只表示有多少像素进入一英寸的输出,因此仅在打印时才有意义.iPad的dpi只代表每英寸屏幕的像素数,因此不会根据我的大脑与PSD的dpi有关.特别是因为它已经是Retina所需的2048×1536尺寸.
我告诉他们这个,但他们坚持认为,这让我怀疑自己的无懈可击.
Who's in the right here? Does the dpi of the design file have anything to do with the dpi of the device? What would make an otherwise smart dev team think this?
我在Qt工作,我需要帮助来获得屏幕的物理尺寸(显示器),
在Qt一个可以得到一个QDesktopWidget从QApplication,我的意思是:
QDesktopWidget *mydesk = QApplication::desktop();
Run Code Online (Sandbox Code Playgroud)
在QDesktopwidget有一些方法来获取像素的分辨率和一些获得了大小milimethers:
mydesk-> widthMM(); mydesk->heightMM();
Run Code Online (Sandbox Code Playgroud)
但是,这与物理尺寸不符,当我用尺子测量我的屏幕时,存在相当大的差异.
还可以获得DPI测量并计算屏幕大小:
mydesk->physicalDpiX(); mydesk->physicalDpiY();
double Winches = (double)mydesk.width() / (double)mydesk.physicalDpiX();
double Hinches = (double)mydesk.Height() / (double)mydesk.physicalDpiY();
Run Code Online (Sandbox Code Playgroud)
在那里mydesk.width() ,并mydesk.height()给在像素尺寸(分辨率)
然而,测量也是错误的,非常接近mydesk.widthMM()和mydesk.heightMM()
我也有三分mydesk.logicalDpiX(),它也有类似的结果.
我的C#应用程序包括带有简单文本框和richtext框的网格.通常,richtext框包含从其他地方复制和粘贴的富文本,并且rtf标记通常包括硬编码字体大小(\ fsXX,XX半点).在大多数情况下,富文本字体大小与简单文本字体大小相同或接近.
当DPI缩放设置为默认值以外的任何值时,富文本会失真,如下所示:
a)当应用程序未设置为DPI识别时,richtext显示为小于简单文本并且模糊.
b)当应用程序设置为DPI时,富文本大于简单文本.
有没有办法允许或强制richtext使用简单文本进行缩放,而不是直接编辑标记?
当对表单类添加了对运行时DPI切换的支持时,没有考虑像菜单这样的基本UI元素.
菜单绘图从根本上被打破,因为它依赖于Screen.MenuFont,这是一个系统范围的度量,不是特定于监视器.因此,虽然表单本身可以相对简单地进行适当缩放,但是显示在其上的菜单只有在缩放恰好匹配加载到Screen对象中的任何度量标准时才能正常工作.
这是主菜单栏,弹出菜单和表单上所有弹出菜单的问题.如果将表单移动到具有与系统指标不同的DPI的监视器,则这些都不会缩放.
真正做到这一点的唯一方法是修复VCL.等待Embarcadero充实多DPI并不是一个真正的选择.
查看VCL代码,基本问题是Screen.MenuFont属性被分配给菜单画布,而不是选择适合显示菜单的监视器的字体.只需在VCL源代码中搜索Screen.MenuFont即可找到受影响的类.
在不必完全重写所涉及的类的情况下,解决此限制的正确方法是什么?
我的第一个倾向是使用绕行来跟踪菜单弹出窗口并在用于设置菜单时覆盖Screen.MenuFont属性.这似乎太过分了.
我正在使用一个使用Web浏览器控件的WPF应用程序,我遇到了高DPI缩放问题.
看起来Web浏览器控件没有正确地遵循系统的DPI设置,而WPF应用程序的其余部分正在正确扩展UI.这意味着在更高级别的级别上,WPF界面变得更大,而Web浏览器内容保持原始的,现在看起来更小.
以下是使用两个Web浏览器控件的WPF应用程序中的屏幕截图示例.
100%缩放:
150%缩放:
请注意,在第二个图像中,Web浏览器缩放比第一个图片相对于主窗体内容(工具栏/菜单/状态栏)小得多.
是否有某种方法可以强制Web浏览器控件正确使用从应用程序继承的高DPI设置?
此MSDN链接: 解决DPI问题
显示了一个真正低级的方法(在doc的底部)实现自定义Web浏览器COM接口,但我想知道是否有更清晰的方法来解决这个问题.
我试图以编程方式在Java中设置jpeg图像的dpi元数据.图像的来源是扫描仪,因此我从TWAIN获得水平/垂直分辨率以及图像原始数据.我想保存此信息以获得更好的打印效果.
这是我到目前为止的代码.它将原始图像(byteArray)保存为JPEG文件,但忽略了我通过IIOMetadata指定的X/Ydensity信息.我有什么建议我做错了吗?
任何其他解决方案(第三方库等)也会受到欢迎.
import java.awt.image.BufferedImage;
import java.awt.image.WritableRaster;
import java.io.File;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageTypeSpecifier;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream
import org.w3c.dom.Element;
import com.sun.imageio.plugins.jpeg.JPEGImageWriter;
public boolean saveJpeg(int[] byteArray, int width, int height, int dpi, String file)
{
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
WritableRaster wr = bufferedImage.getRaster();
wr.setPixels(0, 0, width, height, byteArray);
try
{
// Image writer
JPEGImageWriter imageWriter = (JPEGImageWriter) ImageIO.getImageWritersBySuffix("jpeg").next();
ImageOutputStream ios = ImageIO.createImageOutputStream(new File(file));
imageWriter.setOutput(ios);
// Compression
JPEGImageWriteParam jpegParams = (JPEGImageWriteParam) imageWriter.getDefaultWriteParam();
jpegParams.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
jpegParams.setCompressionQuality(0.85f);
// …Run Code Online (Sandbox Code Playgroud) 有没有办法欺骗WPF应用程序认为它在某个DPI上运行?
我想在各种DPI级别(96,120,144,192)测试我的程序,而不更改系统设置(需要在Windows 7下注销/输入).
我可以手动设置1 DIU的大小吗?(在96 DPI时,1 DIU = 1像素.我想将1 DIU设置为1.25像素以模拟120 DPI.)
我想知道Mac OSX下的物理屏幕尺寸.但NSDeviceResolution总是报错值(72),因此分辨率/ dpi的计算结果是错误的.
在"关于这台Mac"里面,有一个Mac模型字符串,我的是"15英寸,2011年初".所以我想知道是否应该有一种方法(可能是obj-c),读取该字符串然后我可以将其用作物理屏幕大小.
任何帮助表示赞赏.
我需要能够将应用程序清单中的dpiAware属性设置为"每个监视器".属性中的可用选项仅用于启用或禁用DPI感知.这些设置都不适合我.如果我没有在exe中嵌入清单,那么我可以获得我想要的应用程序行为,然后手动编辑清单.我想自动生成并嵌入清单.有什么我想念的吗?(我使用的是Visual Studio 2013.)
所以我在一个新的高DPI,高分辨率设置中使用MySQL工作台.如果我允许MySQL Workbench使用Window的DPI设置,除了编辑器之外,字体变得模糊.
如果我禁用DPI设置(在兼容性中)并在Workbench首选项中提高字体大小,除了左侧菜单(架构列表,表列表,对象信息)这是非常小的字体外,它看起来很好.有没有人知道Workbench的任何变通方法或替代方法?否则,很难继续使用具有高分辨率显示器的Workbench.HeidiSQL遇到了相同的DPI模糊字体问题.所以这要么是头痛还是眯眼.