Access

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

• WinAPI - Interfejs urządzenia graficznego (GDI)

• Pobieranie właściwości obiektu graficznego.

Operując na obiektach graficznych, musimy znać przynajmniej niektóre, istotne właściwości obiektu, by prawidłowo zrealizować zaplanowane operacje graficzne. Właściwości obiektu graficznego możemy pobrać za pomocą funkcji GetObject(...), która:

Opis funkcji GetObject (...)

zwraca informacje dotyczące określonego obiektu graficznego. W zależności od typu obiektu graficznego, informacje zwracane są w strukturze BITMAP, DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT, LOGPEN, a w przypadku palety logicznej zwracana jest tylko ilość elementów palety.

 

Private Declare Function GetObject _
                Lib "gdi32" Alias "GetObjectA" ( _
                ByVal hObject As Long, _
                ByVal nCount As Long, _
                ByRef lpObject As Any) As Long
  • argumenty:
    • hObject
    • uchwyt do obiektu graficznego następującego typu: logiczna bitmapa, pędzel, czcionka, paleta, pióro, lub mapa bitowa niezależna od urządzenia (DIB) utworzone poprzez wywołanie funkcji CreateDIBSection(...)
    • nCount
    • ilość bajtów, jaka ma być zapisana w buforze zawierającym zwracane informacje
    • lpObject
    • wskaźnik do bufora, w którym mają zostać zapisane informacje o określonym obiekcie graficznym. Adres lpObject musi być liczbą 4-bajtową, w przeciwnym przypadku funkcja GetObject(...) zakończy się niepowodzeniem.

       

      Rodzaj zwracanej w buforze informacji, dla poszczególnych typów obiektów graficznych określonych przez argument hObject
      Typ obiektuDane zwracane w buforze *lpvObject
      hBitmapBITMAP
      hBitmap - uchwyt bitmapy zwracany przez funkcję CreateDIBSectionDIBSECTION, jeżeli argument cbBuffer określa wielkość struktury DIBSECTION, lub BITMAP, jeżeli argument cbBuffer określa wielkość struktury BITMAP
      hPaletteInteger - określa ilość elementów w logicznej palecie.
      Nie jest zwracana struktura LOGPALETTE. Aby uzyskać informacje o elementach palety, należy użyć funkcji GetPaletteEntries.
      hPenLOGPEN
      hBrush LOGBRUSH
      hFontLOGFONT

       

  • zwraca:
  • Jeśli funkcja zakończy się powodzeniem, lpObject jest poprawnym wskaźnikiem, a funkcja zwraca liczbę bajtów zapisanych w buforze.
    Przy powodzeniu i argumencie lpObject równym ZERO, zwraca ilość bajtów potrzebnych do zapisania informacji w buforze o przekazanym typie obiektu graficznego.
    Przy niepowodzeniu funkcja zwraca ZERO.

 

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

  • Bufor wskazywany przez parametr lpObject musi być wystarczająco duży, na przyjęcie informacji o obiekcie graficznym. W zależności od obiektu graficznego funkcja wykorzystuje strukturę BITMAP, DIBSECTION, EXTLOGPEN, LOGBRUSH, LOGFONT lub LOGPEN lub liczbę wpisów w tabeli (dla palety logicznej).

  • Jeśli hObject jest uchwytem do bitmapy utworzonej przez wywołanie metody CreateDIBSection(...), a określony bufor jest wystarczająco duży, funkcja GetObject(...) zwraca strukturę DIBSECTION. Ponadto element bmBits struktury BITMAP zawarty w DIBSECTION będzie zawierał wskaźnik do bitów bitmapy.

  • Jeśli hObject jest uchwytem do bitmapy utworzonej w jakikolwiek inny sposób, GetObject(...) zwraca tylko informacje o szerokości, wysokości i formacie kolorów bitmapy. Można uzyskać wartości bitowe bitmapy, wywołując funkcję GetDIBits(...) lub GetBitmapBits(...).

  • Jeśli hObject jest uchwytem do palety logicznej, funkcja GetObject(...) pobiera 2-bajtową liczbę całkowitą, która określa liczbę wpisów w palecie. Funkcja nie pobiera struktury LOGPALETTE definiującej paletę. Aby pobrać informacje o wpisach palety, aplikacja może wywołać funkcję GetPaletteEntries(...).