• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Jiang's C++ Space

            創作,也是一種學習的過程。

               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            近日翻看典著《Windows程序設計》,作者提起到“分辨率”(Resolution)一詞時候,指出這個詞其實是有兩種含義的,一種就是我們廣為熟悉的縱橫像素數目表示法,另一種就是DPI,DPI在打印機和掃描儀領域更常用。

            先說縱橫像素數目表示法,我想我們都不會陌生,640*480,這是VGA的分辨率,800*600,這是15寸CRT常用分辨率,1024*768,這是17寸CRT常用分辨率,1280*1024,這是17寸和19寸LCD額定分辨率,而目前主流的24寸16:10的LCD的額定分辨率則是1920*1200。

            對于DPI,我們可能相對陌生一點,其實DPI就是像素每英寸,為什么是英寸而不是厘米?這是因為發明計算機的老美使用的長度計量單位是英制的,據我所知好像就米國和英國繼續用英制了吧,別的都換成公制了,其實也不難換,1英寸等于2.54厘米。橫向分辨率為96DPI的顯示器,在橫向的2.54厘米里,就有96個像素,可以這么說,假如你有一張100*100像素的小圖片,在96DPI的顯示器上(為了方便起見,假設縱橫DPI都一樣)應該顯示為2.65*2.65厘米,在128DPI的顯示器上,應該顯示為1.98*1.98厘米,圖片看起來在高DPI顯示器上顯示得更小了。那么17寸和19寸的LCD顯示器都是1280*1024的,17寸LCD的DPI是否高于19寸LCD的呢?理論上應該說是的,但我們的操作系統往往不管這些,都默認是96DPI,因為就算DPI有差距,通常也差別不大,就算差別大,用戶難接受,還可以改變系統的顯示分辨率來達到較好的顯示效果呢,而除此之外,Windows還提供了調整字體DPI的選項來讓字體顯示大小適應用戶習慣。

            情況到了便攜設備上就發生了些變化,因為便攜設備的縱橫像素數目分辨率不能調整,而且DPI可能差距很大。我的手機是Samsung SGH-i780的,方屏,分辨率為320*320,有次同事看了我的手機,說:“字怎么這么小的?”,他用的是240*320的,我就對比了一下我們的手機,屏幕寬度基本一致,高度我的就比他的短了一截,你想啊,垂直像素總數大家都是320點,而我的短了一截,所以看起來顯示的文字就比較小了。還有更夸張一些的,現在新出的手機有480*800分辨率的,稱作WVGA,橫向480點,但實際物理尺寸跟我的320點的屏幕差不多,那上門的字恐怕就更小了,可能小到看不清了。而事實上呢?

            事實上并沒有這樣,因為手機軟件的作者已經考慮到這種事情了,所以在繪制文字的時候,會把文字弄大一點,這樣文字的物理尺寸還是差不多的,而看起來卻更加“細膩”。

            橫向DPI和縱向DPI可以這樣獲取:

            GetDeviceCaps(hdc, LOGPIXELSX);
            GetDeviceCaps(hdc, LOGPIXELSY);

            對Windows Mobile來說,應該是這樣的:
            屏幕分辨率 DPI
            240x320 96
            480x640 192
            240x240 96
            480x480 192
            480x800 192
            320x320 128

            你也許要問,為什么能夠保證是這樣?廠家能不能偷偷把屏幕做大一些,或者小一些?我想大概這是一種規范吧。生產Windows Mobile硬件的廠商也就那么幾個,應該蠻好保證的。

            那從我們開發者的角度來說,如何開發適用于各種DPI的程序呢?按照Microsoft的說法,可以這樣:
            You can continue to work in pixels but remove assumptions about the DPI by:
            •Using the SCALEX and SCALEY macros to scale 96-DPI pixel coordinates, or using the metrics returned by GetSystemMetrics.
            •Expressing sizes or positions relative to other controls.
            •Expressing sizes or positions relative to a font.

            更具體內容參考:
            http://msdn.microsoft.com/en-us/library/bb416656.aspx
            posted on 2010-06-03 13:16 Jiang Guogang 閱讀(1412) 評論(3)  編輯 收藏 引用 所屬分類: Windows Embedded Programming

            評論

            # re: 屏幕分辨率 2010-06-03 13:45 matthew
            額,這個你都研究得這么仔細,我都是不求甚解  回復  更多評論
              

            # re: 屏幕分辨率 2010-06-03 18:43 gejun
            很好,明白了dpi和分辨率的區別,以前一直都沒在意 ...
              回復  更多評論
              

            # re: 屏幕分辨率 2011-09-12 12:03 扯淡
            博主有點扯淡了。
            DPI不是用來表示屏幕尺寸的,只是表示像素點的而已....
            用得著扯上多少多少寸顯示器么?

            長篇大論看下來感覺樓主這瞎扯蛋。  回復  更多評論
              

            久久精品国产福利国产秒| 午夜精品久久久久久99热| 久久国产乱子伦精品免费强| 精品久久久久久亚洲| 国产免费久久精品丫丫| 久久久久久久亚洲精品| 无码精品久久久久久人妻中字| 99久久99久久精品免费看蜜桃| 久久精品国产亚洲7777| 精品综合久久久久久97| 一本色道久久88加勒比—综合| 伊人久久大香线蕉综合5g| 色综合久久久久久久久五月| 久久精品二区| 97久久超碰国产精品2021| 日韩AV毛片精品久久久| 久久99国产精品久久99果冻传媒| 一级做a爰片久久毛片看看| 久久伊人精品青青草原高清| 麻豆久久久9性大片| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区| 久久久精品久久久久久| 精品久久一区二区| 国产成人无码精品久久久性色 | 久久er国产精品免费观看2| 久久精品不卡| 日本久久久精品中文字幕| 伊人久久大香线焦AV综合影院| 成人精品一区二区久久| 国产精品美女久久久m| 午夜精品久久久久久毛片| 色狠狠久久综合网| 日本加勒比久久精品| 久久久久这里只有精品| AAA级久久久精品无码区| 久久精品天天中文字幕人妻| 成人久久免费网站| 日韩AV无码久久一区二区| 亚洲国产精品久久电影欧美| 日韩精品久久久久久久电影蜜臀| 中文字幕乱码人妻无码久久|