本书的页码47,由Jeff Prosise撰写的MFC (第二版)(第2章:在窗口中绘制)具有以下语句。

使用度量标准映射模式时要记住的一件事是,在显示屏上,1逻辑英寸通常不等于1物理英寸。换句话说,如果您在MM_LOENGLISH映射模式下绘制的线长为100个单位,则该线可能不会恰好是1英寸长。

我的问题是,如果窗口无法对使用公制映射模式绘制的事物的物理尺寸提供任何保证,那么具有这种映射模式的意义何在?度量标准映射模式仅与打印机相关,而与显示器完全无关吗?

在具有数字端口(如HDMI / Display端口)的现代显示器中,Windows OS无法获得屏幕的物理尺寸,因此可以使用公制尺寸(英寸,而不是像素,请注意显示器的当前分辨率)绘制图形操作系统已经知道)?

最佳答案

逻辑英寸的想法之一是,到显示器的观看距离通常大于到打印页面的距离,因此在典型显示器上将逻辑英寸的默认值设置为比物理英寸大一点是有意义的,尤其是在所见即所得飞速发展的时代。逻辑英寸无需让所有负担来调整应用程序上的设备分辨率,而是让所见即所得应用程序开发人员从打印页面上的距离和大小方面进行思考,而不必处理因设备而异的像素或点(尤其是从显示器到打印机)。

另一个问题是,由于早期显示器的分辨率相对有限,因此要显示与通常打印的文本一样小的清晰文本是不切实际的。例如,文本通常以每英寸6行打印。在典型的显示器分辨率下,这可能意味着每行12个像素,这实际上限制了字体设计和可读性(尤其是在使用抗锯齿和亚像素渲染的文本之前)。将逻辑英寸默认设置为实际英寸的120-130%(在该时代的典型显示器上)意味着文本行的高度为16像素,使得衬线字体和斜体等印刷字体更容易辨认(尽管仍然不够美观)。

还请记住,用户可以控制逻辑英寸,并且可以很好地设置逻辑英寸,以使其与物理英寸匹配(如果适合他们的需求)。

逻辑单元在今天仍然有用,即使监视器的分辨率已接近老式激光打印机的分辨率。考虑为演示设计幻灯片,该幻灯片将被投影并作为讲义打印。投影尺寸取决于投影仪的光学元件及其与屏幕的距离。即使在操作系统和显示设备之间进行双向通信,也无法确定操作系统的实际物理尺寸(对于大多数应用程序也无济于事)。

我不是CSS专家,但据我了解,即使以CSS的px单位工作,您仍在以逻辑单位工作,而逻辑单位可能不完全是物理像素的大小。它应该考虑到设备的实际分辨率和典型的观看距离,从而使Web设计人员能够做出本机应用程序开发人员长期使用的每英寸96英寸的假设。

关于visual-c++ - 具有MM_LOMETRIC和MM_LOENGLISH之类的指标映射模式有什么意义?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41019128/

10-10 14:10