• <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 閱讀(1419) 評論(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久久国产一| 日韩十八禁一区二区久久 | 亚洲成色999久久网站| 久久97久久97精品免视看秋霞| 青草久久久国产线免观| 亚洲国产精品成人久久| 久久九九久精品国产免费直播| 老色鬼久久亚洲AV综合| 久久久青草青青国产亚洲免观 | 久久精品国产亚洲麻豆| 久久一区二区免费播放| 久久久久久伊人高潮影院| 久久亚洲国产午夜精品理论片 | 国产精品免费久久久久影院| 久久久亚洲欧洲日产国码二区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 青青国产成人久久91网| 久久精品无码一区二区WWW| 99久久99久久精品国产片| 久久人爽人人爽人人片AV| 色天使久久综合网天天| 国产精品免费久久久久影院| 久久国产精品一区二区| 久久人人爽人人爽人人AV| 国产69精品久久久久观看软件| 人妻少妇精品久久| 国产精品99久久久久久猫咪 | 一本色道久久综合亚洲精品| 久久久久免费精品国产| 伊人精品久久久久7777| 久久久久亚洲AV成人网人人网站 | 久久九九久精品国产免费直播| 久久www免费人成看国产片| 久久这里只有精品首页| 久久青草国产手机看片福利盒子| 成人久久久观看免费毛片| 亚洲一本综合久久| 精品久久久久久久久久久久久久久| 久久国产精品-国产精品|