标签: dpi

像素到厘米?

我只是想知道像素单元是不会改变的,如果我们可以从像素转换为让我们说厘米?

measurement pixel dpi

21
推荐指数
4
解决办法
9万
查看次数

适用于Values文件夹的Android hdpi/mdpi/ldpi?

Android允许我们为drawable文件夹定义hdpi/mdpi/ldpi,以便考虑不同大小的屏幕/设备.我想知道是否可以为Values文件夹(甚至布局文件夹)应用相同的支持?原因是,我通常定义一个"sizes.xml"文件,其中包含我应用于边距和填充的标准dp大小.我也对文本的sp大小做同样的事情.我想根据手机dpi来调整这些值.

xml android dpi

21
推荐指数
2
解决办法
4万
查看次数

在Windows下获取实际屏幕dpi/ppi

我想获得实际的屏幕dpi/ppi,而不是C++中用于字体的dpi设置.

我尝试使用以下代码:

版本1,报告72 dpi,这是错误的.

SetProcessDPIAware(); //true
HDC screen = GetDC(NULL);
double hSize = GetDeviceCaps(screen, HORZSIZE);
double vSize = GetDeviceCaps(screen, VERTSIZE);
double hRes = GetDeviceCaps(screen, HORZRES);
double vRes = GetDeviceCaps(screen, VERTRES);
double hPixelsPerInch = hRes / hSize * 25.4;
double vPixelsPerInch = vRes / vSize * 25.4;
ReleaseDC(NULL, screen);
return (hPixelsPerInch + vPixelsPerInch) * 0.5;
Run Code Online (Sandbox Code Playgroud)

版本2,报告96 dpi,这是字体的Windows dpi设置,但不是实际的屏幕dpi.

SetProcessDPIAware(); //true
HDC screen = GetDC(NULL);
double hPixelsPerInch = GetDeviceCaps(screen,LOGPIXELSX);
double vPixelsPerInch = GetDeviceCaps(screen,LOGPIXELSY);
ReleaseDC(NULL, screen);
return (hPixelsPerInch + vPixelsPerInch) * …
Run Code Online (Sandbox Code Playgroud)

c++ windows screen dpi ppi

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

通过浏览器以编程方式确定DPI?

我想以编程方式确定用户显示器的DPI,以便以精确的单位数(厘米/英寸)显示网页.我知道这是一个奇怪的要求:它是一个可视化研究项目,它是一种控制.我们目前通过让用户在屏幕上放置信用卡并将可调整大小的div(通过Mootools)与真实信用卡相匹配来实现,并且我们可以获得DPI并正确显示页面.

谁能想到一种编程方式来做到这一点?

javascript mootools dpi

18
推荐指数
1
解决办法
2万
查看次数

如何在C#中获取图像的DPI

如何使用asp.net c#获取图像的dpi

c# dpi

18
推荐指数
1
解决办法
1万
查看次数

在Windows Vista和Windows 7中对DPI虚拟化和DPI感知应用程序进行故障诊断

我有一个问题,在所有系统上,应用程序(用Delphi编写)在默认的96 DPI设置下表现正常,但在不同系统上的"150%文本大小"(内部144 dpi)设置下表现不一致.似乎在某些系统上,我的应用程序的某些文本/字体部分正在被拉伸,而在其他系统上,它们不是.我原以为我的应用程序,在某个版本的Windows(Win7)上,在某个DPI下,应该表现得一样.

我的应用程序将使Windows知道它不需要DPI虚拟化功能,或者它不需要.我明白了.我不明白的是DPI更改如何在两台机器上产生不同的外观,两台机器都以144 dpi运行Windows 7,以相同的固定大小显示相同的字体和形式.

我需要在Windows(注册表等)中检查DPI虚拟化中是否涉及一些与配置相关的元素?否则,您如何排除故障并了解是否在客户端窗口上进行了DPI虚拟化?

在Delphi中,如果不想扩展,必须将TForm.Scaled属性设置为false.但我不明白的是,当主窗体的Scaled属性为真时,我无法总是预测结果.

在我的应用程序中,最令我困惑的是,我有一个控件只在我的大型实际应用程序中行为不端,但在我试图调试控件的独立应用程序中没有出错.为了理解独立应用程序中的控件行为,我被迫制作了一个演示应用程序,我通过清单文件强制进行DPI感知.然后我可以重现控制绘图故障,虽然是以不同的形式.

这是我在我的演示应用程序中使用的清单文件,它暴露了我的控件在处理windows中的高dpi设置时遇到的问题.但是,我发现一件奇怪的事情是应用程序是可能的

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <asmv3:application xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <asmv3:windowsSettings
         xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
  <assemblyIdentity version="14.0.3615.26342" processorArchitecture="*"            
   name="TestProject" type="win32"></assemblyIdentity>
  <description>High DPI Controls Test App</description>
</assembly>
Run Code Online (Sandbox Code Playgroud)

这是我在应用程序中禁用DPI虚拟化时,我的应用程序中的控件混乱的大约30个地方之一的示例.通过关闭我的表单中的Scaled属性来解决这个特殊的故障.但在其他地方,TForm.Scaled = false导致问题,而在某些形式,它修复它:

具有非DPI虚拟化应用清单的DPI Glitch示例,但主要形式是Scaled

更新:事实证明我的一些控件使用GDI +并且GDI +上下文中的字体行为与普通GDI上下文中的字体行为不同,至少对于使用GDI +的某些第三方控件而言.这是头痛的主要原因.其次,对于VCL中的DPI感知,存在不稳定的测试覆盖率和不明确的要求.一些VCL控件基于MS公共控件,虽然公平地说底层公共控件在高DPI情况下可能正常工作,但并不是所有的VCL控件包装都能保证正常工作.因此,在所有控件中查看高DPI感知应用程序,以及所有可用Windows 7主题中的正确行为:

  1. 96dpi的航空玻璃(大多数现代硬件上的默认Win7外观)
  2. 基本主题(航空玻璃关闭)但启用了XP主题
  3. 经典的win2000外观,玻璃关闭,以及XP级主题,
  4. 高对比度白色
  5. 高对比度黑色
  6. 各种96-DPI以外的设置

..并且列表继续.作为应用程序开发人员,你有一个相当沉重的负担.无论您是delphi用户还是使用VCL,或者您是MFC/ATL C++开发人员,在我看来,支持所有各种奇特的Windows模式是一种几乎无法承受的负担.所以大多数人都不打扰.我对吗?

delphi dpi highdpi windows-vista windows-7

18
推荐指数
4
解决办法
1万
查看次数

Android:使用平板电脑模拟其他设备?

我正在考虑投资Google Nexus 10作为我测试我的应用程序的首选平板​​电脑 - 我只是想知道是否有可能模仿其他设备的屏幕分辨率?由于nexus 10具有如此高的分辨率和DPI,我希望能够在其上运行我的应用程序,例如800 x 480屏幕等...

如果可能的话,我想这样做,因为它比使用模拟器更快,并且支持多点触控.这看起来很简单,但实际上可能吗?

android resolution emulation dpi tablet

18
推荐指数
2
解决办法
3419
查看次数

如何在DPI识别的获胜应用程序上缩放标题栏?

我通过设置<dpiAware>True/PM</dpiAware>清单文件使每个监视器的应用程序dpi感知.我可以使用进程资源管理器验证这确实有效,或者通过调用GetProcessDpiAwareness来验证.

这一切都运行正常,我可以在我的代码中很好地扩展客户端区域中的任何内容.但是,我唯一的问题是,如果我将我的应用程序从system-dpi监视器拖到非系统dpi监视器,标题栏和任何系统菜单将变得太大或太小.对于大多数内置应用程序(例如计算,边缘浏览器等),情况并非如此,因此必须妥善扩展它.MS的开发人员有没有这样做过?

下面的截图应该更好地解释我的问题.另请注意,关闭,最小和最大按钮之间的填充在缩放(96dpi)时是不同的.

截图

示例应用程序我附加了一个非常简单的应用程序,每个监视器dpi意识到.

c++ winapi dpi windows-8.1 windows-10

18
推荐指数
2
解决办法
2352
查看次数

DPI在Retina iPad应用程序设计中

我不知道这是否属于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?

dpi ppi ipad ios retina-display

17
推荐指数
1
解决办法
3万
查看次数

针对不同的Android屏幕尺寸/密度扩展Phonegap应用?

我有一个Phonegap应用程序,旨在在Android手机和平板电脑上运行.文字和图像的比例在手机上看起来很好,但在7英寸平板电脑上却太小了.

有没有办法设置适用于基于Phonegap的应用程序的不同屏幕尺寸/密度的比例?对于原生的Android应用程序,多个屏幕布局(如Android文档中所述)将是一个解决方案,但这可以用于基于Phonegap的应用程序吗?

我可以使用CSS媒体查询根据屏幕大小设置字体大小,但我想按比例缩放整个界面(包括图像).

我尝试使用CSS zoom属性和媒体查询来定位特定的屏幕大小,但这会破坏绝对定位并干扰UI元素的功能,例如iScroll:

@media only screen and (min-device-width : 768px) {
    body{
        zoom: 125%;
    }   
}
@media only screen and (min-device-width : 1024px){ 
    body{
        zoom: 150%;
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试使用targetdensity-dpimeta视口属性 - 将其调整为120dpi使得7"平板电脑上的刻度更好,但手机上的尺寸太大了.由于这是在HTML而不是CSS中进行硬编码,因此不能使用媒体查询根据屏幕大小来改变它:

<meta name="viewport" 
   content="width=device-width, initial-scale=1, targetdensity-dpi=120dpi">
Run Code Online (Sandbox Code Playgroud)

以下是来自测试用Phonegap应用程序的一些截图:

css android dpi scale cordova

17
推荐指数
2
解决办法
4万
查看次数