關於單位“緹”與“像素”的轉換,以及緹與其他單位(例如:厘米)之間的轉換


問題:

  緹等於多少像素?

 


方法一:

  緹(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

 

 

 

 

方法二: 緹與像素相互轉換的通用函數

這里順便說一下 ACCESS 中的其他幾個單位的轉換關系

 

磅:指打印的字符的高度的度量單位。1 磅等於 1/72 英寸,或大約等於 1 厘米的 1/28。
英寸:2.54 厘米

一般情況下:1厘米=8505像素

Option Compare Database
Option Explicit
Private Declare Function apiGetDC Lib "user32" Alias "GetDC" _
    (ByVal hwnd As Long) As Long
Private Declare Function apiReleaseDC Lib "user32" Alias "ReleaseDC" _
    (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function apiGetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" _
    (ByVal hdc As Long, ByVal nIndex As Long) As Long

Private Const LOGPIXELSX = 88
Private Const LOGPIXELSY = 90

Public Const DIRECTION_VERTICAL = 1
Public Const DIRECTION_HORIZONTAL = 0

'===============================================================================
'-函數名稱:         gFunTwipsToPixels
'-功能描述:         轉換堤到像素
'-輸入參數說明:     參數1:rlngTwips Long 需要轉換的堤
'                   參數2:rlngDirection Long DIRECTION_VERTICAL是Y方向 DIRECTION_HORIZONTAL為X方向
'-返回參數說明:     轉換后像素值
'-使用語法示例:     gFunTwipsToPixels 50,DIRECTION_VERTICAL
'-參考:
'-使用注意:         
'-兼容性:           97,2000,XP compatible
'-作者:             王宇虹(參考微軟KB),改進:王宇虹
'-更新日期:        2002-08-26 ,2002-11-15
'===============================================================================
Function gFunTwipsToPixels(rlngTwips As Long, rlngDirection As Long) As Long
    On Error GoTo Err_gFunTwipsToPixels
    Dim lngDeviceHandle As Long
    Dim lngPixelsPerInch As Long
    lngDeviceHandle = apiGetDC(0)
    If rlngDirection = DIRECTION_HORIZONTAL Then  '水平X方向
        lngPixelsPerInch = apiGetDeviceCaps(lngDeviceHandle, LOGPIXELSX)
    Else       '垂直Y方向
        lngPixelsPerInch = apiGetDeviceCaps(lngDeviceHandle, LOGPIXELSY)
    End If
    lngDeviceHandle = apiReleaseDC(0, lngDeviceHandle)
    gFunTwipsToPixels = rlngTwips / 1440 * rlngPixelsPerInch
Exit_gFunTwipsToPixels:
    On Error Resume Next
    Exit Function
Err_gFunTwipsToPixels:
    MsgBox Err.Description, vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume Exit_gFunTwipsToPixels
End Function
'===============================================================================
'-函數名稱:         gFunPixelsToTwips
'-功能描述:         轉換像素到堤
'-輸入參數說明:     參數1:rlngPixels Long 需要轉換的像素
'                   參數2:rlngDirection Long DIRECTION_VERTICAL是Y方向 DIRECTION_HORIZONTAL為X方向
'-返回參數說明:     轉換后堤值
'-使用語法示例:     gFunPixelsToTwips 50,DIRECTION_VERTICAL
'-參考:
'-使用注意:         
'-兼容性:           97,2000,XP compatible
'-作者:             王宇虹(參考微軟KB),改進:王宇虹
'-更新日期:        2002-08-26 ,2002-11-15
'===============================================================================
Function gFunPixelsToTwips(rlngPixels As Long, rlngDirection As Long) As Long
    On Error GoTo Err_gFunPixelsToTwips
    Dim lngDeviceHandle As Long
    Dim lngPixelsPerInch As Long
    lngDeviceHandle = apiGetDC(0)
    If rlngDirection = DIRECTION_HORIZONTAL Then  '水平X方向
        lngPixelsPerInch = apiGetDeviceCaps(lngDeviceHandle, LOGPIXELSX)
    Else       '垂直Y方向
     lngPixelsPerInch = apiGetDeviceCaps(lngDeviceHandle, LOGPIXELSY)
    End If
    lngDeviceHandle = apiReleaseDC(0, lngDeviceHandle)
    gFunPixelsToTwips = rlngPixels * 1440 / rlngPixelsPerInch
Exit_gFunPixelsToTwips:
    On Error Resume Next
    Exit Function
Err_gFunPixelsToTwips:
    MsgBox Err.Description, vbOKOnly + vbCritical, "Error: " & Err.Number
    Resume Exit_gFunPixelsToTwips
End Function


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM