• <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 閱讀(1411) 評論(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国产精品 | 97久久精品人人澡人人爽| 99久久免费国产特黄| 狠狠精品久久久无码中文字幕 | 精品综合久久久久久97| 久久久无码人妻精品无码| 国内精品伊人久久久久影院对白 | 99久久婷婷国产综合亚洲| 国产香蕉97碰碰久久人人| 亚洲中文字幕无码久久2020| 四虎国产精品免费久久5151| 久久久久精品国产亚洲AV无码| 久久久久亚洲Av无码专| 亚洲精品乱码久久久久久蜜桃| 久久精品国产精品青草| 超级97碰碰碰碰久久久久最新| 免费国产99久久久香蕉| 色综合久久久久无码专区| 久久成人国产精品一区二区| 国内精品久久人妻互换| 久久国产AVJUST麻豆| 久久亚洲中文字幕精品一区四| 久久久精品一区二区三区| 久久亚洲AV成人无码国产| 少妇无套内谢久久久久| 久久综合久久伊人| 久久久久亚洲AV综合波多野结衣| 国产精品久久久久久一区二区三区| 亚洲色婷婷综合久久| 久久亚洲AV无码精品色午夜| 久久久久久国产精品无码下载| 青青青青久久精品国产| 久久精品www| 一本久久a久久精品综合夜夜| 久久国产精品-国产精品| 久久精品国产精品青草app| 久久国产精品久久精品国产| 99久久精品无码一区二区毛片 | 亚洲中文久久精品无码| 久久婷婷五月综合色奶水99啪| 亚洲国产成人久久综合野外|