4. Jak zamienić twipy na piksele i odwrotnie?

Wzajemne przeliczanie twipów na piksele jest istotne przy korzystaniu z funkcji API, ponieważ Access posługuje się twipami, a funkcje API wymagają  podania wymiarów w pikselach.

Poniższy kod należy wkleić do modułu w Accessie:

'Moduł na podstawie z MSDN Library
Option Compare Database
Option Explicit

Declare Function GetDC& Lib "user32" (ByVal hw&)
Declare Function ReleaseDC& Lib "user32" (ByVal hw%, ByVal hDC&)
Declare Function GetDeviceCaps& Lib "Gdi32" (ByVal hDC&, ByVal iCapability&)
Const WU_LOGPIXELSX = 88
Const WU_LOGPIXELSY = 90
Public Type POINTAPI
        X As Long
        Y As Long
End Type
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

'Zamienia piksele na twipy
Function Pixels2Twips(lngPix As Long, lngDirection As Long) As Long

   Dim lngDC As Long
   Dim lngPixelsPerInch As Long
   Const nTwipsPerInch = 1440
   lngDC = GetDC(0)  'Pobiera tzw. kontekst urządzenia
   
   If (lngDirection = 0) Then   'Szerokość (wymiar poziomy)
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
   Else                         'Wysokość (wymiar pionowy)
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
   End If
   lngDC = ReleaseDC(0, lngDC)
   Pixels2Twips = (lngPix / lngPixelsPerInch) * nTwipsPerInch

End Function

'Zamienia twipy na piksele
Function Twips2Pixels(ByVal lngTwips As Long, lngDirection As Long) As Long

    Dim lngDC As Long
    Dim lngPixelsPerInch As Long
    Const nTwipsPerInch = 1440
    lngDC = GetDC(0)
    
    If (lngDirection = 0) Then   'Szerokość
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Else                         'Wysokość
      lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
    End If
    lngDC = ReleaseDC(0, lngDC)
    Twips2Pixels = (lngTwips / nTwipsPerInch) * lngPixelsPerInch

End Function

Przykładowo, aby przeliczyć 100 pikseli na twipy, należy wywołać funkcję Pixels2Twips w następujący sposób:

=Pixels2Twips(100, 0)	'gdy chodzi o wymiar poziomy
=Pixels2Twips(100, 1)	'gdy chodzi o wymiar pionowy

K. P.