我是使用Java的程序员,所以我不确定这是否是问这种问题的正确位置,它去了: .jpeg .png等),此图像用于与实际标签的实际尺寸(物理尺寸)进行比较,然后再将其打印在特定机器上。

问题是,例如,在我的机器上,我有笔记本电脑的屏幕和'27显示器,它们都使用相同的分辨率1920x1080,但是正如您想象的那样,如果您调整任何窗口/程序/图像的大小,由于物理屏幕尺寸不同,它在笔记本电脑上看起来更小它具有相同的分辨率(我想是因为像素的物理尺寸小于显示器上的像素尺寸)在任何类型的屏幕上都可以显示屏幕尺寸。

关于编程,我可以轻松地获得屏幕尺寸并调整图像大小,但这是因为操作系统将大小(由设置的大小)返回给程序,但是即使我具有正确的大小,物理屏幕也可以显示较小的图像,例如,屏幕的像素较小。

任何如何从此开始?
我怎么知道实际的物理屏幕尺寸?
这似乎是硬件问题,而不是图形问题。

#1 楼

在许多或大多数情况下,操作系统都不知道实际的屏幕尺寸!通常,您只能搜集的是品牌和型号,有时甚至没有。因此,如果您不想拥有数据库,那么最好的办法就是询问您的用户。

也有一些有趣的极端情况。如果显示器实际上是投影仪,该怎么办?您在多显示器设置中做什么?如果图像在两台显示器之间的中间位置怎么办?如果操作员出于辅助功能原因使用像素缩放,该怎么办?如果图像同时显示在2台显示器上,该怎么办?如果监视器很大(例如在会议室中使用的监视器),而您的图像却比较小(例如4 x 4像素),该怎么办? ...

评论


$ \ begingroup $
是的,谢谢您添加了这些问题;其中一些我已经将它们列入清单。我有点不知道如何为此使用或创建合适的数据库,因为它似乎需要大量准确的资源。我希望有一个替代/可能的解决方案。
$ \ endgroup $
–4673_j
17年1月5日,11:44

$ \ begingroup $
@ 4673_j这就是为什么甚至Adobe也未实现此功能的原因。即使他们的用户会受益(并且他们会通过询问用户立即获得数据库)。基本上在当前日期还不完全可行。
$ \ endgroup $
– joojaa
17年1月5日,11:47

$ \ begingroup $
嗯..我可能有部分解决方案,因为可能有大约10个不同的监视器/屏幕。我现在正在搜索如何从系统中提取该信息。谢谢你的努力。我认为操作系统必须提供这种“功能/信息”,而不仅仅是分辨率。因为操作系统可以直接访问所有物理组件。
$ \ endgroup $
–4673_j
17年1月5日,11:55

$ \ begingroup $
@ 4673_j很好的情况是该信息早在1995年就不存在了,否则网络仍然会像印刷出版物一样进行设计。操作系统不要尝试对我的显示器DPI做出反应是一件好事,否则它将破坏许多正常操作。
$ \ endgroup $
– joojaa
17年1月5日,11:58

#2 楼

回顾过去,MSDN定义了几个在大多数情况下是无用的值(完全废话):

dd144877%28v = vs.85%29.aspx

int width_mm = GetDeviceCaps(hdx, HORZSIZE);
int height_mm = GetDeviceCaps(hdx, VERTSIZE);


但是,有一种方法可以通过VESA检索信息。任何现代显示器都应该能够处理。只有我不知道该怎么做。在Linux下,您有一个名为xrandr的命令,该命令可用于查找以下信息:在我的xrandr -q命令的输出中正确无误。我读了多年,VESA信息有时可能会出错,但是我想现在它已经很可靠了。

评论


$ \ begingroup $
嗯..听起来很有趣,我来看看VESA。我对linux没问题,但是该程序的大多数用户都使用Windows。我将从这里开始,看看我能走多远。谢谢你的时间。
$ \ endgroup $
–4673_j
18年4月20日在10:24