• Wybór obiektu kontekstu urządzenia (DC).
Jeżeli chcemy wykonywać operacje na obiekcie w kontekście urządzenia (DC) musimy uaktywnić dany obiekt za pomocą funkcji SelectObject(...), która:
Opis funkcji SelectObject (...)
wybiera obiekt w określonym kontekście urządzenia, zwracając uchwyt aktywnego obiektu tego samego typu, który przestaje być wyróżnionym obiektem kontekstu urządzenia. Nowy obiekt zastępuje poprzedni obiekt tego samego typu.
Public Declare Function SelectObject _ Lib "gdi32" Alias "SelectObject" ( _ ByVal hdc As Long, _ ByVal hObject As Long) As Long
- argumenty:
- hdc
- Uchwyt kontekstu urządzenia
- hObject
-
uchwyt obiektu, który ma zostać wybrany w kontekście urządzenia. Wybierany obiekt musi być utworzony
za pomocą jednej z następujących funkcji GDI
- bitmapa - CreateBitmap, CreateBitmapIndirect, CreateCompatibleBitmap, CreateDIBitmap, CreateDIBSection, (bitmapa może być wybrana w pamięciowym kontekście urządzenia tylko raz i tylko w jednym kontekście urządzenia)
- pędzel - CreateBrushIndirect, CreateDIBPatternBrush, CreateDIBPatternBrushPt, CreateHatchBrush, CreatePatternBrush, CreateSolidBrush
- font - CreateFont, CreateFontIndirect
- pióro - CreatePen, CreatePenIndirect
- region - CombineRgn, CreateEllipticRgn, CreateEllipticRgnIndirect, CreatePolygonRgn, CreateRectRgn, CreateRectRgnIndirect
- zwraca:
-
Jeśli wybrany obiekt nie jest regionem, funkcja przy powodzeniu zwraca uchwyt zastępowanego obiektu (poprzednio aktywnego). Jeśli wybrany obiekt jest regionem, funkcja przy powodzeniu zwraca jedną z następujących wartości:
- NULLREGION = 1 - region jest pusty
- SIMPLEREGION = 2 - region składa się z jednego prostokąta
- COMPLEXREGION = 3 -region zawiera więcej niż jeden prostokąt
- ERRORAPI = 0 - wystąpił błąd
Przy błędzie, (bez względu, czy wybierany obiekt jest regionem, czy innym obiektem), funkcja zwraca ZERO.
Kilka uwag o stosowaniu funkcji SelectObject(...).
- Funkcja SelectObject(...) zwraca poprzednio wybrany obiekt określonego typu. Po zakończeniu operacji graficznych powinniśmy zastąpić wybrany przez nas obiekt obiekt oryginalnym, którego uchwyt został zwrócony
- Nie może równocześnie wybrać bitmapy do więcej niż jednego kontekstu urządzenie DC.
• Usuwanie obiektu z kontekstu urządzenia (DC).
Po zakończeniu wykonywania operacji graficznych na roboczym obiekcie w pamięciowym kontekście urządzenia, musimy usunąć obiekt za pomocą funkcji DeleteObject(...), która:
Opis funkcji DeleteObject (...)
Usuwa obiekt (logiczne pióro, pędzel, czcionkę, bitmapę, region lub paletę), zwalniając wszystkie zasoby systemowe związane z usuwanym obiektem. Po usunięciu obiektu, wartość uchwytu usuwanego obiektu jest już nieaktualna.
Public Declare Function DeleteObject _ Lib "gdi32" Alias "DeleteObject" ( _ ByVal hObject As Long) As Long
- argumenty:
- hObject
- Uchwyt usuwanego obiektu (pióra, pędzla, czcionki, bitmapy, regionu lub palety kolorów)
- zwraca:
-
Przy powodzeniu funkcja zwraca wartość różną od ZERA, przy niepowodzeniu zwraca ZERO.
Kilka uwag o stosowaniu funkcji DeleteObject(...).
- Jeżeli przekazany do funkcji uchwyt hObject jest nieprawidłowy, lub obiekt jest aktualnie używany w kontekście urządzenia, funkcja kończy się niepowodzeniem i zwraca ZERO
- Nie można usunąć graficznego obiektu (pióra lub pędzla) z kontekstu urządzenia, jeżeli jest on aktualnie wybrane w kontekście urządzenia.
- Jeżeli usuwany jest pędzel deseniowy utworzony za pomocą funkcji CreatePatternBrush(...), to skojarzona z nim bitmapa, nie zostanie usunięta. Bitmapa musi zostać usunięta niezależnie.