Access

  MS Access 2010+  |  Aplication Programming Interface API  |   VBA 7.0

• WinAPI - Interfejs urządzenia graficznego (GDI)

• Tworzenie bitmapy kompatybilnej z kontekstem urządzenia.

Jeżeli chcemy wykonać jakąkolwiek operację graficzną na bitmapie, w utworzonym wcześniej pamięciowym kontekście urządzenia (DC) musimy bitmapę załadować z zasobów (najczęściej dyskowych) lub ją samemu utworzyć. Bitmapę możemy utworzyć za pomocą funkcji CreateCompatibleBitmap(...), która:

Opis funkcji CreateCompatibleBitmap (...)

Tworzy bitmapę zgodną z kontekstem urządzenia (DC) o określonym uchwycie hdc. Utworzona bitmapa jest typu DDB (Device Dependent Bitmap) i poza organizacją w pamięci, w żaden inny sposób nie jest związana z rzeczywistym kontekstem urządzenia.

Public Declare Function CreateCompatibleBitmap _
               Lib "gdi32" Alias "CreateCompatibleBitmap" _
               (ByVal hdc As Long, _
               ByVal nWidth As Long, _
               ByVal nHeight As Long) As Long
  • argumenty:
    • hdc
    • uchwyt kontekstu urządzenia
    • nWidth
    • szerokość bitmapy w pikselach
    • nHeight
    • wysokość bitmapy w pikselach
  • zwraca:
  • Przy powodzeniu funkcja zwraca uchwyt utworzonej kompatybilnej bitmapy (DDB) ,przy niepowodzeniu funkcja zwraca ZERO.

Kilka uwag o stosowaniu funkcji CreateCompatibleBitmap(...).

  • Format koloru bitmapy utworzonej za pomocą funkcji CreateCompatibleBitmap(...) jest zgodny z formatem koloru kontekstu urządzenia którego uchwyt hdc został przekazany. Bitmapa może być wybrana w dowolnym aspekcie dowolnego kontekstu urządzenia pamięciowego, który jest kompatybilny z oryginalnym kontekstem urządzenia
  • Jeżeli wartość argumentu nWidth lub nHeight równa jest Zero, funkcja CreateCompatibleBitmap(...) zwraca uchwyt do monochromatycznej bitmapy o wymiarach 1x1 piksel.
  • Jeśli sekcja DIB, bitmapą utworzonej przez funkcję CreateDIBSection(...), zostanie wybrana w kontekście urządzenia identyfikowanego przez parametr hdc, CreateCompatibleBitmap(...) utworzy sekcję DIB.
  • Po zakończeniu operacji graficznych na bitmapie, należy w celu zwolnienia zasobów uruchomić funkcję  DeleteObject(...)