ACC2000: Cómo convertir Twips a píxeles

Avanzado: Requiere conocimientos avanzados de codificación, interoperabilidad y multiusuario.


En este artículo se aplica a una base de datos de Microsoft Access (.mdb) y a un proyecto de Microsoft Access (.adp).


Resumen

Puesto que Microsoft Access almacena las propiedades de dimensión y la ubicación como twips, en algunos casos tendrá que convertir twips a píxeles, como cuando se llama a una función de API de Windows. En este artículo se muestra cómo hacerlo.


Microsoft proporciona ejemplos de programación únicamente con fines ilustrativos, sin ninguna garantía expresa o implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos.

Más información

Puede utilizar la siguiente función ConvertTwipsToPixels() para convertir twips a píxeles. Observe que el píxeles no cuadrados (el alto y ancho no son el mismo); por lo tanto, es necesario pasar en la "dirección" deseada para usar (horizontal o vertical).


  1. Cree un nuevo módulo y escriba lo siguiente en la sección Declaraciones:

    Option Explicit
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
    ByVal hdc As Long) As Long
    Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
    ByVal nIndex As Long) As Long

    Const WU_LOGPIXELSX = 88
    Const WU_LOGPIXELSY = 90

    NOTA: puede que algunas funciones de la API de Microsoft Windows definidas en una biblioteca de Microsoft Access existente; por lo tanto, las declaraciones pueden estar duplicados. Si recibe un mensaje de error de nombre de procedimiento duplicados, quite o comente la instrucción de declaraciones en el código.
  2. Escriba el procedimiento siguiente:
    Function ConvertTwipsToPixels (lngTwips as Long, _   lngDirection as long) As Long

    'Handle to device
    Dim lngDC as long
    Dim lngPixelsPerInch as Long
    Const nTwipsPerInch = 1440
    lngDC = GetDC(0)

    If (lngDirection = 0) Then 'Horizontal
    lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Else 'Vertical
    lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
    End If
    lngDC = ReleaseDC(0, lngDC)
    ConvertTwipsToPixels = (lngTwips / nTwipsPerInch) * lngPixelsPerInch

    End Function

Para llamar a esta función, pase el número de twips, que desea convertir y otro parámetro que indica la medida horizontal o vertical (0 para cero en horizontal, vertical). El siguiente es un ejemplo de llamada:

Function ShowConvert()   Dim lngOldTwips As Long
lngOldTwips = 2377
ShowConvert = ConvertTwipsToPixels(lngOldTwips, 0)
End Function

Propiedades

Id. de artículo: 210590 - Última revisión: 8 ene. 2017 - Revisión: 1

Comentarios