程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VBA裡的尺寸單位

VBA裡的尺寸單位

編輯:VB綜合教程
 

VBA裡的尺寸單位很多,如Twip,Point,Pixel,Inch,Character,Millimeter, Centimeter等。而不同的地方使用的單位有時不一樣,例如ExcelWord裡的長寬單位多用Point,Access裡多用Twip,而 API裡用的尺寸單位多為Pixel,這樣單位轉換時會覺得有點混亂。這主要介紹用得比較多的Twip,Point和Pixel之間的轉換方法。

VBA裡的尺寸單位很多,如Twip,Point,Pixel,Inch,Character,Millimeter,Centimeter等。而不同的地方使用的單位有時不一樣,例如Excel和Word裡的長寬單位多用Point,Access裡多用Twip,而API裡用的尺寸單位多為 Pixel,這樣單位轉換時會覺得有點混亂。這主要介紹用得比較多的Twip,Point和Pixel之間的轉換方法。

Twip/Point是一個與屏幕無關的測量單位,這樣在打印時不要考慮屏幕分辨率的問題。Pixel則是同像素有關的測量單位。屏幕上顯示最小的一個點就是一個像素。

Twip,Point和Inch轉換公式如下:
Twip=1/20*Point=1/1440*Inch
Point=20*Twip=1/72*Inch

而Twip/Point同Pixel之間則要依據設備環境參數做轉換,下面是一些轉換的函數。

Private Const HORZRES = 8
Private Const VERTRES = 10
Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90
Private Const TWIPSPERINCH = 1440

Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, _
ByVal nIndex As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
ByVal hDC As Long) As Long
Function getDPI(bX As Boolean) As Integer '獲取屏幕分辨率
Dim hDC As Long, RetVal As Long
hDC = GetDC(0)
If bX = True Then
getDPI = GetDeviceCaps(hDC, LOGPIXELSX)
Else
getDPI = GetDeviceCaps(hDC, LOGPIXELSY)
End If
RetVal = ReleaseDC(0, hDC)
End Function
Function Pixel2TwipX(x As Long) As Long '水平方向Pixel轉Twip
Pixel2TwipX = (x / getDPI(True)) * TWIPSPERINCH
End Function
Function Pixel2TwipY(x As Long) As Long '垂直方向Pixel轉Twip
Pixel2TwipY = (x / getDPI(False)) * TWIPSPERINCH
End Function
Function Pixel2PointX(x As Long) As Long '水平方向Pixel轉Point
Pixel2PointX = Pixel2TwipX(x) / 20
End Function
Function Pixel2PointY(x As Long) As Long '垂直方向Pixel轉Point
Pixel2PointY = Pixel2TwipY(x) / 20
End Function
Function Twip2PixelX(x As Long) As Long '水平方向Twip轉Pixel
Twip2PixelX = x / TWIPSPERINCH * getDPI(True)
End Function
Function Twip2PixelY(x As Long) As Long '垂直方向Twip轉Pixel
Twip2PixelY = x / TWIPSPERINCH * getDPI(False)
End Function
Function Point2PixelX(x As Long) As Long '水平方向Point轉Pixel
Point2PixelX = Twip2PixelX(x * 20)
End Function
Function Point2PixelY(x As Long) As Long '垂直方向Point轉Pixel
Point2PixelY = Twip2PixelY(x * 20)
End Function
Function getScreenX() As Long '獲取屏幕寬
Dim hDC As Long, RetVal As Long
hDC = GetDC(0)
getScreenX = GetDeviceCaps(hDC, HORZRES)
RetVal = ReleaseDC(0, hDC)
End Function
Function getScreenY() As Long '獲取屏幕高
Dim hDC As Long, RetVal As Long
hDC = GetDC(0)
getScreenY = GetDeviceCaps(hDC, VERTRES)
RetVal = ReleaseDC(0, hDC)
End Function
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved