Directory Contents Search << >>


DaVinci 4: Leonardo: Funktion StretchDIB (Größenskalieren/Spiegeln/Ausschneiden)

Windows unterstützt die Funktionen StretchDIBits und StretchBlt zur Größenanpassung und Spiegelung von Bildern. Dabei erfolgt die Ausgabe des gedehnten Bildes in einen HDC.

Leider hat die Stretching-Funktion von Windows 9x/ME einen Fehler der bei großen Zoomfaktoren (etwa große Bitmap auf kleiner Fläche Anzeigen) zur Unterdrückung der Ausgabe führt.

Die Leonardo-Funktion StretchDIB erzeugt eine DIB, die ein skaliertes Abbild eines Ausschnitts aus einer anderen DIB enthält.

HDIB WINAPI StretchDIB(

HDIB

hDIB,

int

cxDest,

int

cyDest,

LPRECT

rc);

hDIB

Handle der Quell-DIB. Es darf sich um eine DIB mit 1,4,8,16 ,24 oder 32 Bit Farbtiefe handeln.

Das übergebene Handle bleibt gültig.

cxDest

Breite der neu zu erstellenden DIB in Pixeln. Dieser Wert muss > 0 sein.

cyDest

Höhe der neu zu erstellenden DIB in Pixeln. Dieser Wert muss > 0 sein.

rc

Zeiger auf eine RECT-Struktur mit Angaben zur Lage des gewünschten Ausschnitts aus hDIB.

Dieser Wert darf NULL sein, wenn die Eingabe-DIB vollständig verarbeitet werden soll.

Um das Abbild zu spiegeln kann die Rechteck-Struktur so ausgefüllt werden, dass left > right bzw. bottom > top ist.

Rückgabewert:

Der Rückgabewert gibt das Handle der neu erstellten DIB an. Er ist NULL, falls die Funktion nicht erfolgreich ausgeführt werden konnte. Das Handle muss von der Applikation mit der Funktion GlobalFree wieder freigegeben werden.

Die zurückgelieferte DIB hat dieselbe Farbauflösung und Farbpalette wie die Quell-DIB.

Anmerkungen:

Diese Leonardo-Funktion basiert auf der Leonardo-Funktion TransformDIB. TransformDIB ist flexibler und erlaubt dank der Callback-Technologie auch die Pflege eines Fortschrittsbalkens aus Ihrer Anwendung.

Die Funktion ScaleToGray erlaubt dieselbe Verarbeitung mit Anti-Aliasing zur Erzielung einer höhereren Darstellungsqualität, auch bei farbigen Eingabegrafiken.

Speicherbedarf:

Die StretchDIB-Routine benutzt nur sehr kleine temporäre Speicherblöcke. Der Speicherbedarf wird nahezu ausschließlich von den Eingabe und Ausgabe-DIBs bestimmt.

DIBs mit 1 Bit Farbtiefe können direkt verarbeitet werden, so dass zum Bearbeiten eines ganzseitigen monochromen Bildes in Fax-Qualität ca. 500 KBytes Hauptspeicher für die beiden DIBs ausreichen.

Arbeitsgeschwindigkeit:

Die Arbeitsgeschwindigkeit dieser Funktion wird nahezu ausschließlich von der Größe der ZIEL-Bitmap bestimmt. Die Anzeige einer großen Bitmap in einem kleinen Fenster erfolgt mit dieser Funktion schnell.

Anmerkungen:

Beim Verkleineren von DIBs kann in vielen Fällen mit der Funktion ScaleToGray ein besseres Ergebnis erzielt werden.

Diese Funktion basiert auf der Funktion StretchDIB2DIBBlt

Optimierungen:

Für folgende Sonderfälle enthält die Pro-Version von DaVinci Optimierungen zur Erhöhung der Arbeitsgeschwindigkeit:

Kopieren von DIB-Ausschnitten mit biBitCount >=8 im Maßstab 1:1

Dehnen/Stauchen (nicht Spiegeln) mit biBitCount >=8 in beliebigem Maßstab

-


Valid HTML 4.01!