zoukankan      html  css  js  c++  java
  • Points and Pixels

    silverlightWindows phone程序中经常用到 FontSize 但是这个大小到底是多少呢?

    silverlight 所有的大小都是 pixels 为单位的。当然fontsize也不例外,当你指定FontSize=”36” 时,显示文本的最上面到最下面的高度是接近36 pixels ,但是这将导致 所在的TextBlock的实际高度 大约48 pixels,也就是大约比FontSize 33%,这些增加的空间就是行距,目的是使行与行直接不会互相干扰。

    传统上,字体大小是以points为单位的,在古典的排版格式中,一个point 是非常接近于1/72 英寸,但是在数字排版格式中,point 常常被假设就是1/72 英寸, 一个被设置成72 points的字体 从字符的上面到下面接近1 英寸,(I say “approximately” because the point size indicates a typographic design height,and it’s really the creator of the font who determines exactly how large the characters of a 72-point font should be.

    但是如何在pixelspoints直接进行转换呢,当然我们不排除那些特殊的输出设备,在一个600 DPIdots-per-inch)的打印机,72-point的字体将会显示600pixels的高度

    我们平时使用的桌面显示器的分辨率 100DPI左右,例如:假如一个21寸的显示器 水平方向显示1600 pixels 竖直方向显示1200 pixels ,那么对角线就是2000 pixels,除以21英寸得到其DPI约为 95 DPI,默认状态下Windows会假定显示分辨率为96DPI,这种情况下字体大小pixelspoints之间的关系可以使用下面的公式表示:

    points=3/4 *pixels

    pixels=4/3 *points

    虽然这个公式仅仅适用于一般的显示器,但是人们还是很乐意使用这个公式来进行转换的,所以当我们设置FontSize=”36” 的时候,也可以说是设置了 27-point的字体大小。

    对于一个指定point大小的字体,可以通过增加33% 获取其pixel大小,当在TextBlock中设置的时候,TextBlock也会比设置的FontSize增高另一个33%

    当遇到一个高分辨率的设备的时候 这个问题会变得更加复杂,比如说对于Windows phone 7,显示为480*800的对角线约为933piexls,对于一个3.5英寸的手机设备来说,pixel密度接近 264 DPI(屏幕分辨率通常得再乘以24),将近是一般桌面显示器分辨率的2.5倍,这并不意味着在一般显示器上显示的字体大小需要乘以2.5 才能在手机上正常显示,高分辨率和更近的查看距离可以允许更小的字体显示在手机上。

     

    注:屏幕大小是以英制的寸为单位,对角线量。21寸指的是屏幕的对角线为21英寸,1英寸等于公制的2.54厘米。21英寸即53.34厘米。 因为屏幕虽然是矩形,但不一定是什么比例的,比如:可能是4:3,也可能是16:10或其它比例。这样,显然用长与宽做为依据是不合理的,同理,如果用面积的话,还需要计算长与宽之积,比较麻烦,另外,只要对角线长度相同的两个矩形,不管它们分别是什么比例的,面积必定相同。 所以最简单的办法就是测屏幕的对角线看大小,由于这是面板工厂里测量面板的最直观、最简单的方法(一个人用尺对角线一量就知道大小,长宽还需要测两遍),所以市面上也就这样使用了。

  • 相关阅读:
    VS 2010下一次性配置opencv(32位和64位相同)
    模拟鼠标事件
    Main函数参数argc,argv说明
    Visual Studio 2010 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏解决方案
    常量指针和指针常量
    strlen函数实现的几种方法
    杀死指定的进程名
    typedef和typename关键字
    如何理解dart的mixin
    c# 通过dllimport 调用c 动态链接库
  • 原文地址:https://www.cnblogs.com/yinghuochong/p/2158440.html
Copyright © 2011-2022 走看看