标签: dpi

从JS/CSS检测系统DPI/PPI?

我正在研究一种独特的应用程序,它需要根据显示的设备生成特定分辨率的图像.因此,在常规Windows浏览器(96ppi),iPhone(163ppi),Android G1(180ppi)和其他设备上的输出是不同的.我想知道是否有办法自动检测到这一点.

我最初的研究似乎说不.我看到的唯一建议是在CSS中创建一个宽度指定为"1in"的元素,然后检查它的offsetWidth(另请参阅如何通过javascript访问屏幕显示的DPI设置?).有道理,但iPhone用这种技术骗我,说它是96ppi.

另一种方法可能是以英寸为单位获取显示尺寸,然后除以宽度(以像素为单位),但我不知道如何做到这一点.

javascript css mobile dpi ppi

48
推荐指数
6
解决办法
6万
查看次数

如何通过javascript访问屏幕显示的DPI设置?

有没有办法在Javascript函数中访问屏幕显示的DPI设置?

我试图在页面上放置一个HTML面板,当用户的DPI设置为大(120)时,它会关闭该位置.我需要能够知道DPI是什么,所以我可以相应地调整位置.

javascript dpi display-dpi

48
推荐指数
3
解决办法
7万
查看次数

如何正确包含10"和7"布局

Nexus 7:7"1280x800

Galaxy tab 10.1 10"1280x800

我想让我的应用程序在7英寸和10英寸平板电脑上运行.据我所知,我必须在我的应用程序中包含这些布局文件夹:

用于7英寸平板电脑

  • 布局sw600dp
  • 布局sw600dp端口

用于10英寸的片剂

  • 布局sw720dp
  • 布局sw720dp端口

它在nexus 7上运行良好,但在10英寸平板电脑上加载sw600dp布局.

如果我包含这些默认文件夹:

  • 布局
  • 布局端口

10"galaxy tab从这些加载布局.

如果我只包含默认布局文件夹和sw600dp文件夹,它会在nexus7上崩溃.

如果10英寸星系标签不能加载sw720p布局,我该如何支持手机,7英寸平板电脑和10英寸平板电脑?

编辑:格式化

layout android dpi tablet

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

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

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

我在WinForms表单中显示WPF内容(通过ElementHost),并试图找出一些大小调整逻辑.当操作系统以默认的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".

wpf dpi elementhost

36
推荐指数
3
解决办法
4万
查看次数

使用bootstrap打印页面3

我一直在寻找关于stackoverflow的很多答案,半封面我想知道的,但没有发现任何对我有用的东西.

我知道A4的打印页面大约是550像素,因此bootstrap将使用通常用于移动设备的样式和布局.

当我使用Ctrl + P作为我的网页时,可打印页面看起来就像我的页面的移动版本.但是如何让它看起来像桌面版?(媒体> 1024 px)有办法做到这一点吗?

我知道我可以专门为打印更改css.但是如何使用bootstrap 3网格系统来解决这个问题呢?我的div上的宽度基于我为col-xs添加的内容,但我希望print使用col-md的布局(宽度)

编辑:在我用了几个小时之后,我意识到它可能比我最初的预期更复杂.只是改变宽度并不能解决它.我的许多div都有语法

<div class="md-right sm-right xs-down col-md-1 col-sm-2 box"></div>
Run Code Online (Sandbox Code Playgroud)

要么

<div class="col-md-4 col-sm-6 col-xs-12"></div>
Run Code Online (Sandbox Code Playgroud)

对于小型设备,该页面在XS中看起来很不错,但在XS中打印使得许多元素看起来很大.所以问题仍然存在.有没有办法让打印页面看起来与中型或大型设备的布局相同?或者我是否必须在不使用引导网格系统的情况下制作打印css并在pt中为所有元素添加静态宽度来实现此目的?

提前致谢

printing dpi twitter-bootstrap-3

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

缩放非客户区域(标题栏,菜单栏)以获得每个监视器的高DPI支持

Windows 8.1引入了为不同监视器提供不同DPI设置的功能.此功能称为"每监视器高DPI支持".它在Windows 10中持续存在并得到进一步完善.

如果应用程序没有选择加入(,DPI不知道或高DPI意识),它将由DWM自动扩展到正确的DPI.大多数应用程序属于这两个类别之一,包括与Windows捆绑在一起的大多数实用程序(例如,记事本).在我的测试系统上,高DPI监视器设置为150%标度(144 DPI),而普通监视器设置为系统DPI(100%标度,96 DPI).因此,当您在高DPI屏幕上打开其中一个应用程序(或将其拖到那里)时,虚拟化会启动,放大所有内容,但也会让它变得非常模糊.

另一方面,如果应用程序明确指出它支持每个监视器的高DPI,则不执行虚拟化,并且开发人员负责扩展.微软在这里有一个相当全面的解释*,但为了一个独立的问题,我将总结一下.首先,通过<dpiAware>True/PM</dpiAware>在清单中设置来指示支持.这会选择接收WM_DPICHANGED消息,它会告诉您新的DPI设置以及窗口的建议新大小和位置.它还允许您调用GetDpiForMonitor函数并获取实际 DPI,而不会因兼容性原因而被欺骗.肯尼克尔也写了一个全面的教程.

我已经在一个小小的C++测试应用程序中成功完成了所有这些工作.这是很多样板和大多数项目设置,所以我在这里发布一个完整的例子并不是很重要.如果您想测试它,请遵循Kenny的说明,MSDN上的本教程,或下载官方SDK示例.现在,客户端区域中的文本看起来很好(因为我的处理WM_DPICHANGED),但由于不再执行虚拟化,因此不会缩放非客户区域.结果是标题/标题栏和菜单栏的大小错误 - 它们在高DPI屏幕上不会变大:

所以问题是,如何让窗口的非客户区扩展到新的DPI?
无论您是创建自己的窗口类还是使用对话框,它们在这方面都具有相同的行为.

已经表明,有没有答案,那你唯一的选择是自定义绘制整个窗口,包括非客户区.虽然这当然是可能的,实际上UWP应用程序(以前称为Metro)的功能,例如Windows 10计算器,对于使用许多非客户端小部件并希望看起来像原生的桌面应用程序来说,它不是一个可行的选择.

除此之外,它显然是错误的.自定义绘制的标题栏不能是获得正确行为的唯一方法,因为Windows shell团队已经完成了它.简洁的"运行"对话框的行为完全符合预期,当您在具有不同DPI的监视器之间拖动时,正确调整客户端和非客户端区域的大小:

使用Spy ++进行的调查证实,这只是一个标准的Win32对话框 - 没什么特别的.所有控件都是标准的Win32 SDK控件.它不是一个UWP应用程序,也没有自定义绘制标题栏 - 它仍然具有WS_CAPTION风格.它是由explorer.exe进程,它推出标记为每个监视器高DPI感知(使用Process Explorer和GetProcessDpiAwareness验证).此博客文章确认已在Windows 10中重写了"运行"对话框和"命令提示符"以正确扩展(请参阅" 命令shell等 ").Run对话框用于调整其标题栏的大小是什么?

负责新式打开和保存对话框的Common Item Dialog API在从每个监视器高DPI感知的进程启动时也可以正确扩展,如您在Run对话框中单击"Browse"按钮时所看到的.同样的事情任务对话框API,创建奇数情况下的应用程序启动一个对话框,以不同大小的标题栏.(但是,传统的MessageBox …

windows winapi dpi windows-10 windows-10-desktop

36
推荐指数
2
解决办法
5433
查看次数

如何在.NET WinForms应用程序中控制字体DPI

我为小型企业创建了一个应用程序.办公室的一些员工无法正确查看表格.原因是他们的DPI设置设置为96dpi以上.有人知道控制这个的方法吗?

对于有winforms应用程序经验的所有人,如何控制表单布局以使DPI不影响应用程序的外观?

fonts dpi winforms

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

更改显示的DPI缩放大小使Qt应用程序的字体大小变得更大

我用Qt创建了一些GUI应用程序.我的GUI应用程序包含按钮和单选按钮等控件.当我运行应用程序时,按钮内的按钮和字体看起来很正常.当我将显示器的DPI缩放尺寸从100%更改为150%或200%时,控件的字体大小变大但控制尺寸(按钮,单选按钮)无论分辨率如何.因此,内部控件中的文本被切断.请参阅附图.

当DPI缩放大小设置为100%时,Qt应用程序看起来

当DPI缩放大小设置为100%时,Qt应用程序看起来

当DPI缩放大小设置为200%时,Qt应用程序看起来

当DPI缩放大小设置为200%时,Qt应用程序看起来

我也在一些平板电脑上运行我的应用程序.在平板电脑中,DPI标度值应该超过150%,否则一切都将显示得非常小.

我在网上搜索了在Qt中创建UI应用程序,无论分辨率和DPI比例值如何,但没有运气.所以我在这里发布我的任务.如果有办法摆脱这种情况,请告诉我.

c++ user-interface qt resolution dpi

33
推荐指数
3
解决办法
4万
查看次数

停止Firefox DPI缩放(当Windows设置为125%时)

我目前正在制作一个网页,并在Chrome中测试它很好,但在Firefox中 - 它被放大了.

这是因为我在Windows中的DPI设置为125%,Firefox会检测到这一点,并相应地调整每个网页.

但是,我的网页并不意味着在这样的缩放级别上观看,图像不会显示得那么大,因此它看起来模糊/像素化.页面的总体布局也搞砸了,因为一切都很大.

现在,这不会影响大多数人 - 因为他们的DPI在Windows中将达到100%.但是,我希望它在所有浏览器上都是一样的.

我已经搜索并找到了解决方案,用户可以禁用此"功能" - 但我希望能够从我的网站禁用它 - 所以它首先不会对用户造成错误.

例如,一个帖子说:

1)类型about:config在地址栏
2)搜索layout.css.devPixelsPerPx
3)的变化值layout.css.devPixelsPerPx-1.01.0

但这不是我想要的.有没有办法从CSS/HTML /任何东西禁用它?

谢谢.

css firefox scaling zoom dpi

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

为什么Nexus 6密度为560 dpi?

如何为Nexus 6准备资源?如果我将图像放到xxxhdpi,它们将缩小并降低质量.我把图像放到xxhdpi它们会扩大并失去质量.如果实际密度493ppi更接近xxhdpi~480dpi,为什么开发人员决定设置值为560dpi?

Nexus 6拥有令人印象深刻的5.96英寸四核高清屏幕,分辨率为2560 x 1440(493 ppi).这转换为~730 x 410 dp(密度无关像素).

Nexus 6的量化密度为560 dpi,介于xxhdpi和xxxhdpi主密度桶之间.

对于Nexus 6,该平台将缩减xxxhdpi资产,但如果这些资产不可用,那么它将扩大xxhdpi资产.

xxhdpi ~480dpi
xxxhdpi ~640dpi
Run Code Online (Sandbox Code Playgroud)

android dpi screen-density

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