Directory Contents Search << >>


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

Kopiert einen Ausschnitt aus einer Quell-DIB in eine Ziel-DIB ähnlich der Windows API-Funktion StretchDIBits. 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 Anzeigefläche) zur Unterdrückung der Ausgabe führt.

Die Leonardo-Funktion StretchDIB2DIBBlt kopiert einen Ausschnitt aus einer Quell-DIB in eine Ziel-DIB. Bei diesem Kopiervorgang kann die Größe des kopieren Bildes geändert werden und das Bild kann gespiegelt werden.

BOOL WINAPI StretchDIB2DIBBlt(

HDIB

hdibDst,

int

xDst,

int

yDst,

int

dxDst,

int

dyDst,

HDIB

hdibSrc,

int

xSrc,

int

ySrc,

int

dxSrc,

int

dySrc)

hdibDst

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

Das übergebene Handle bleibt gültig.

xDst, yDst

Linke untere Koordinate des Rechtecks in der Ziel-DIB

dxDst, dyDst

Größe des Rechtecks in der Ziel-DIB

hdibSrc

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.

xDst, yDst

Linke untere Koordinate des Rechtecks in der Quell-DIB

dxDst, dyDst

Größe des Rechtecks in der Quell-DIB

Rückgabewert:

Der Rückgabewert ist bei erfolgreicher Ausführung der Funktion ungleich 0.

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.

Speicherbedarf:

Die StretchDIB2DIBBlt -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 des Zielrechtecks definiert durch die Parameter dxDst und dyDst 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, da sie Anti-Aliasing berechnungen durchführt. Dies gilt auch für farbige Eingabegrafiken.

die Funktion kann verwendet werden, um Daten aus einer Quell-DIB im CMYK Farbraum in eine DIB im RGB-Farbraum zu kopieren oder umgekehrt. Beim Kopieren CMYK -> CMYK werden direkt im CMYK-Farbraum kopiert, es kommt nicht zu einem Qualitätsverlust.

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!