Directory Contents Search << >>


DaVinci 4: Bildbearbeitung mit Windows API Funktionen

Microsoft Windows stellt viele wichtige Funktionen zur Bildbearbeitung zur Verfügung.

Alle Zeichenanweisungen in Microsoft Windows beziehen sich auf Device-Context-Handles (HDC oder TDC). Zeichenanweisungen umfassen solche Funktionen wie LineTo oder Rectangle, aber auch Funktionen wie BitBlt oder PatBlt, mit denen Bitmaps ineinander kopiert werden können.

Leider stellen die 16-Bit-Windows-Fassungen keine Funktionen zum drehen oder komplexen transformieren von Bildern zur Verfügung. Daher wird entsprechende Funktionalität durch die Funktionen DIBRotate und TransformDIB von Leonardo zur Verfügung gestellt.

Die folgenden Methoden geben Auskunft, wie Sie eine DIB indirekt mit Windows-Methoden bearbeiten können.

1. Methode: Verwenden einer DDB

Um ein von ipImportInd geliefertes Bild mit Microsoft Windows zu bearbeiten, können Sie es mit der Funktion BitmapFromDIB in eine DDB umwandeln.

Nun benötigen Sie zum Zeichnen aber ein Device-Context-Handle. Dieses erhalten Sie von der Funktion CreateCompatibleDC (NULL). Um den Device-Context mit Ihrer DDB zu verbinden, benutzen Sie die Funktion SelectObject:

{ HDC hDC = CreateCompatibleDC(NULL);

HBITMAP hbm = BitmapFromDIB(hdib, NULL),

hbmold= (HBITMAP) SelectObject( hbm );

// Zeichenoperation ausführen .....

MoveToEx(hDC, 0, 0, NULL);

LineTo (hDC, 100, 100);

// Aufräumen

SelectObject( hDC, hbmold);

DeleteDC(hDC);

}

Beachten Sie, dass eine DDB für ein Fenster immer nur in der Farbtiefe des Bildschirm-Einheitenreibers (oder wahlweise monochrom) bearbeitet werden kann. Daher wird Ihre DIB mit 24 Bit TrueColor Daten evtl. für die Zeichenoperation mit erheblichem Qualitätsverlust in eine DDB mit nur 16 Farben überführt.

2. Methode: Verwenden der Funktion CreateDIBSection

Die Funktion CreateDIBSection erlaubt es unter WIN32, in DIBs nahezu ohne Einschränkungen Zeichenoperationen auszuführen.

-


Valid HTML 4.01!