• <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 閱讀(1426) 評論(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不是用來表示屏幕尺寸的,只是表示像素點的而已....
            用得著扯上多少多少寸顯示器么?

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

            色欲久久久天天天综合网| 日本道色综合久久影院| 午夜久久久久久禁播电影| 国产综合久久久久久鬼色| 国产无套内射久久久国产| 久久这里都是精品| 久久婷婷综合中文字幕| 四虎国产精品成人免费久久| 97久久超碰国产精品2021| 亚洲?V乱码久久精品蜜桃| 精品久久久噜噜噜久久久| 少妇久久久久久被弄到高潮| 俺来也俺去啦久久综合网| 久久精品国产男包| 精品国产综合区久久久久久 | 久久免费高清视频| 国产美女亚洲精品久久久综合| 亚洲国产二区三区久久| 人妻无码久久一区二区三区免费| 久久久久免费视频| 97精品伊人久久久大香线蕉| 91精品国产高清91久久久久久| 久久精品国产亚洲AV香蕉| 久久性精品| 久久精品国产亚洲Aⅴ香蕉| 2020久久精品国产免费| 久久人人爽人人爽人人AV东京热| 久久久久久久女国产乱让韩| 午夜精品久久久久久影视777| 国产精自产拍久久久久久蜜| 亚洲国产精品久久久久婷婷软件| 国内精品久久久久伊人av| 久久精品无码专区免费青青| 天天躁日日躁狠狠久久 | 国产午夜精品理论片久久影视| 亚洲AV成人无码久久精品老人 | 久久久久一本毛久久久| 久久人人爽人人爽人人片AV东京热| 久久国产福利免费| 亚洲а∨天堂久久精品| 波多野结衣AV无码久久一区|