ACC2000: كيفية تحويل تويب إلى بكسل

خيارات متقدمة: يتطلب ترميز الخبير إمكانية التشغيل المتداخل ومهارات متعددة.


Microsoft Access (.adp) ومشروع Microsoft Access (.mdb).تنطبق هذه المقالة لقاعدة بيانات


ملخص

لأن Microsoft Access بتخزين خصائص البعد/الموقع كوحدة القياس twips، في بعض الحالات قد يلزم تحويل تويب إلى بكسل، مثل عند استدعاء دالة Windows API. يوضح هذا المقال كيفية القيام بذلك.


تقدم Microsoft أمثلة برمجية للتوضيح فقط، دون أي ضمان صريح أو ضمني. هذا يتضمن، على سبيل المثال لا الحصر، الضمانات الضمنية الخاصة بالتسويق أو الملاءمة لغرض معين. تفترض هذه المقالة أنك معتاد على لغة البرمجة التي يتم شرحها والأدوات المستخدمة لإنشاء الإجراءات وتصحيحها. يساعد مهندسو الدعم لدى Microsoft في شرح وظيفة إجراء محدد، لكنهم لن يقوموا بتعديل هذه الأمثلة لتقديم وظيفة إضافية أو إنشاء إجراءات تستوفي متطلبات محددة.

مزيد من المعلومات

يمكنك استخدام الدالة ConvertTwipsToPixels() التالية لتحويل تويب إلى بكسل. لاحظ أن البيكسلات ليست دائماً مربعة (الارتفاع والعرض ليست نفسها)؛ ولذلك، من الضروري تمرير في "الاتجاه" المطلوب لاستخدام (أفقي أو عمودي).


  1. إنشاء وحدة نمطية جديدة واكتب ما يلي في مقطع Declarations:

    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

    ملاحظة: قد تحتاج بعض المهام ل Microsoft Windows API المعرفة في مكتبة Microsoft Access موجودة؛ لذلك، قد تكون التعريفات الخاصة بك التكرارات. إذا تلقيت رسالة خطأ اسم إجراء مكرر، إزالة أو تعليق خارج عبارة التعريفات في التعليمات البرمجية الخاصة بك.
  2. اكتب الإجراء التالي:
    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

لاستدعاء هذه الدالة، تمرير عدد تويب الذي تريد تحويله، ومعلمة أخرى تشير إلى القياس الأفقي أو الرأسي (0 أفقي، صفراً للعمودي). المثال التالي استدعاء نموذج:

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

خصائص

رقم الموضوع: 210590 - آخر مراجعة: 08‏/01‏/2017 - المراجعة: 1

تعليقات