Twip和Pixel
pixel(像素)
可在屏幕或打印機上顯示的最小元素。像素與屏幕無關。
各種顯示類型的設計
MicrosoftWindows是與設備無關的-基于窗口的應用程序可以在許多不同顯示分辨率與顏色濃度的計算機中運行。同樣,用VisualBasic編寫的應用程序也會在不同類型的顯示器上運行,在設計應用程序時需要考慮到這一點。
設計與分辨率無關的窗體
缺省情況下,當改變屏幕分辨率時,MicrosoftVisualBasic不會改變窗體與控件的尺寸。這就意味著在分辨率
為1024X768的屏幕上設計的窗體,在分辨率為640X480的屏幕中運行時會伸出屏幕的邊界之外。如果想創建不管使用什么樣的屏幕
分辨率都能有相同比例的窗體和控件,必須在最低的分辨率下設計窗體,或者將改變窗體的代碼添加到程序中去。
避免尺寸問題的最簡單的方法是在640X480的分辨率下設計窗體。如果更喜歡在高一些的分辨率下工作,仍需要考慮窗體在低一些的分辨率下將如何
顯示。實現這一點的方法是用“FormLayout”窗口預覽窗體的大小和位置。您也可以使用“ResolutionGuides”觀察在低分辨率時
屏幕的哪些部分是可見的。要切換到“ResolutionGuides”,可以在“FormLayout”窗口單擊鼠標右鍵,從彈出菜單上選擇
“ResolutionGuides”菜單項。
在運行時,VisualBasic根據設計時的位置來放置窗體。如果設計時在1024X768的分辨率上運行,并把窗體放到屏幕的右下角,則 當它在比較低的分辨率下運行時該窗體可能看不見。為了避免這種情況的發生,在設計時可從“FormLayout”窗口的彈出菜單選擇 “StartupPosition”菜單項來設置窗體的啟動位置。同樣,您也可以在運行時用下面的FormLoad事件中的代碼來設置窗體的位 置:
PrivateSubForm_Load()
Me.Move0,0
EndSub
若是設置窗體的Left與Top的屬性都為0也能有同樣的效果,但Move方法只要一步就能完成。
VisualBasic使用與設備無關的度量單位,緹,是用來計算尺寸與位置。Screen對象的兩個屬
性TwipsPerPixelX與TwipsPerPixelY可以用來確定運行時的顯示尺寸。應用這些屬性,可以編寫代碼來調整窗體以及控件的
尺寸與位置。
PrivateSubSetControls()
DimXAsInteger
DimYAsInteger
X=Screen.TwipsPerPixelX
Y=Screen.TwipsPerPixelY
SelectCaseX,Y
Case15,15
'重新改變控件尺寸及移動控件。
txtName.Height=200
txtName.Width=500
txtName.Move200,200
'增加為其它分辨率編寫的代碼。
…
EndSub
也需要知道在設計時VisualBasic自身窗口的位置。如果在高分辨率下把“工程”窗口放置到屏幕的右邊,那么會發現在低分辨率下打開工程時,它不再是可訪問的了。
設計不同濃度的顏色
在設計應用程序時,也需要考慮運行應用程序計算機可能的顏色顯示能力。有些計算機可以顯示256色或更多的顏色,而另一些只能顯示16種顏色。如
果使用256色的調色板來設計窗體,那么在16色上顯示時,抖動(模仿無效顏色的一種方法)會使窗體上的一些元素消失。
為了避免這種情況,最好把應用程序使用的顏色局限于Windows標準的16顏色。這些顏色由VisualBasic的顏色常數來表示
(如vbBlack、vbBlue和vbCyan等等)。如果在應用程序中需要用16種以上的顏色,那么對于文本、按鈕以及其他界面元素仍然
應當堅持用標準顏色。
「Twip」中文譯為"緹",是一種和屏幕無關的長度單位,目的是為了讓應用程序元素輸出到不同設備時都能保持一致的計算方式。打印機的一個點,即我們說的“磅”,相當于20個 Twips,一英吋相當于 1440個Twips, 一公分則相當于567 Twips ,也就是說,如果屏幕上某個對象的長度是1440 Twip的話,將會印出一英吋來。
由于我們在屏幕上 操作時會習慣用「像素」(也就是我們常說的屏幕分辨率DPI,系統可以設置各種DPI值),所以我們直接輸入數字時必須再將「像素」換算成「Twip」。 當DPI設置為96時(系統默認值),1個像素=(1/96)*1440=15 Twip;當DPI設置為120時,1個像素=(1/120)*1440=12 Twip。當DPI為96時,如果希望窗體的高是「400」像素,寬是「300」像素,屬性的設定值就是: Height=400×15=6000 Twip,Width =300×15=4500 Twip.
在VisualBasic應用程序中,屏幕(Screen)是一個對象。其Width和Height屬性以Twip為單位反映出屏幕的寬度和高度。而TwipsPerPixelX和TwipsPerPixelY這兩個屬性只與硬件有關,而與屏幕上 可設定的分辨率無關。將Width除以TwipsPerPixelX可以計算出屏幕的水平分辨率(像素數),同樣將Height除以 TwipsPerPixelY也可以計算出屏幕的垂直分辨率。要想保持一個窗口或是控件的物理大小不變,只要計算出設計時的分辨率與實際運行時的分辨率的 比值,然后根據這個比值來調節窗口和其中的控件的大小和相對位置,以及顯示的字體尺寸,就可以保持同一應用程序的窗口在不同的系統下的物理外觀(當然在不 同尺寸的顯示器上只能保持比例不變,物理大小還是不同的)。
1、
緹(Twips) (緹:計量單位,等于“磅”的 1/20,英寸的 1/1,440。一厘米有 567 緹。
像素(Pixels):監視器或打印機分辨率的最小單位
右鍵單擊桌面,選擇屬性,選擇“設置”選卡,單擊高級按鈕。
里面出現DPI設置。一般為“正常尺寸(96 DPI)”。
DPI的意思就是 DPI (Dots per Inch)。因此我們可以得到如下換算公式
1 Pixel = 1440 TPI / 96 DPI = 15 Twips
1 Twip = 96 DPI / 1440 TPI = 0.0666667 Pixels
2、
TwipsPerPixelX、TwipsPerPixelY 屬性
返回水平 (TwipsPerPixelX) 或垂直 (TwipsPerPixelY) 度量的對象的每一像素中的緹數。
Windows API 例程一般需要以像素為度量單位。使用這些屬性能夠快速轉換度量單位而不用改變對象的 ScaleMode 屬性設置值
總結
以上是生活随笔為你收集整理的Twip和Pixel的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “北航Clubs” Alpha版发布!
- 下一篇: 《Programming WPF》翻译