Darstellen von Bildern aus einer Bildliste

Verwenden Sie zum Zeichnen eines Bilds die Memberfunktion "CImageList::D raw" . Sie geben einen Zeiger auf ein Gerätekontextobjekt, den Index des zu zeichnenden Bilds, die Position im Gerätekontext, an der das Bild gezeichnet werden soll, und eine Reihe von Kennzeichnungen an, um den Zeichenstil anzugeben.

Wenn Sie die ILD_TRANSPARENT Formatvorlage angeben, wird ein zweistufiger Prozess verwendet, Draw um ein maskiertes Bild zu zeichnen. Zunächst führt sie einen logischen UND-Vorgang für die Bits des Bilds und die Bits der Maske aus. Anschließend führt sie einen logischen XOR-Vorgang für die Ergebnisse des ersten Vorgangs und die Hintergrundbits des Zielgerätekontexts aus. Dieser Prozess schafft transparente Bereiche im resultierenden Bild; d. h., jedes weiße Bit in der Maske bewirkt, dass das entsprechende Bit im resultierenden Bild transparent ist.

Bevor Sie ein maskiertes Bild auf einem Volltonfarbenhintergrund zeichnen, sollten Sie die SetBkColor-Memberfunktion verwenden, um die Hintergrundfarbe der Bildliste auf dieselbe Farbe wie das Ziel festzulegen. Wenn Sie die Farbe festlegen, ist es nicht erforderlich, transparente Bereiche im Bild zu erstellen und das Draw Bild einfach in den Zielgerätekontext zu kopieren, was zu einer erheblichen Leistungssteigerung führt. Um das Bild zu zeichnen, geben Sie beim Aufrufen Drawdie ILD_NORMAL Formatvorlage an.

Sie können die Hintergrundfarbe für eine maskierte Bildliste (CImageList) jederzeit so festlegen, dass sie auf jedem vollfarbigen Hintergrund korrekt bezieht. Wenn Sie die Hintergrundfarbe auf CLR_NONE festlegen, werden Bilder standardmäßig transparent gezeichnet. Verwenden Sie die Memberfunktion "GetBkColor ", um die Hintergrundfarbe einer Bildliste abzurufen.

Die ILD_BLEND25 - und ILD_BLEND50 Formatvorlagen dithern das Bild mit der Systemmarkierungsfarbe. Diese Formatvorlagen sind nützlich, wenn Sie ein maskiertes Bild verwenden, um ein Objekt darzustellen, das der Benutzer auswählen kann. Sie können z. B. die ILD_BLEND50 Formatvorlage verwenden, um das Bild zu zeichnen, wenn der Benutzer es auswählt.

Ein nicht maskiertes Bild wird mithilfe des SRCCOPY Rastervorgangs in den Zielgerätekontext kopiert. Die Farben im Bild werden unabhängig von der Hintergrundfarbe des Gerätekontexts gleich angezeigt. Die angegebenen Draw Zeichenformatvorlagen wirken sich auch nicht auf das Erscheinungsbild eines nicht maskierten Bilds aus.

Neben der Draw-Memberfunktion erweitert eine andere Funktion, DrawIndirect, die Möglichkeit zum Rendern eines Bilds. DrawIndirect verwendet als Parameter eine IMAGELISTDRAWPARAMS-Struktur . Diese Struktur kann verwendet werden, um das Rendering des aktuellen Bilds anzupassen, einschließlich der Verwendung von Rastervorgangscodes (ROP). Weitere Informationen zu ROP-Codes finden Sie unter Rastervorgangscodes und Bitmaps als Pinsel im Windows SDK.

Siehe auch

Verwenden von CImageList
Steuerelemente