2010-11-15 6 views
5

Ich habe eine reine C++/Win32 VS2005 Desktop-Anwendung. Während meiner WM_PAINT-Antwort möchte ich, wenn ich mein Fenster male, ein transparentes PNG-Bild auf mein Fenster projizieren.Transparente PNG-Datei in einer reinen C++/Win32-Anwendung

jeder Zeiger wird geschätzt.

+0

Haben Sie für etwas wie "Windows PNG-Bibliothek" gegoogelt und die Ergebnisse angesehen? Wenn ja, welche Probleme hast du gesehen, was es aufgetaucht ist? –

+0

@JerryCoffin Just FYI, dieser Beitrag ist jetzt das Top-Google-Ergebnis für "Paint Png Winapi", in der Tat sind die Top-4 jetzt alle SO. – jrh

Antwort

3

GdiPlus hat einen Teil von Windows seit Windows XP gewesen bei und kann JPEG-, PNG- und GIF-Dateien mit Leichtigkeit dekodieren. Eine neuere API für den Umgang mit Bilddateien ist die Windows Image Component. Eine der samples Deckblätter verwendet WIC, um ein Bild zu dekodieren, und GdiPlus, um das Alpha-Aware-Bild auszuführen.

2

Die Windows Imaging Component (WIC) ist die primäre API für nativen Code, mit der verschiedene Bildformate codiert und decodiert werden können. Sie können damit ein PNG-Bild in Ihre Anwendung laden.

http://msdn.microsoft.com/library/ee719902

Alternativ können Sie GDI + verwenden, aber das ist ziemlich alte Technologie und funktioniert nicht annähernd so gut. Sie können GDI + auch verwenden, um das Bild zu rendern, aber ich schlage Direct2D vor.

Direct2D kann ein WIC-Bitmap direkt auf der GPU oder in Software über einen Fenster- oder Bitmap-Gerätekontext rendern.

Hier ist ein einleitender Artikel über Direct2D:

http://msdn.microsoft.com/en-ca/magazine/dd861344.aspx

Und dieser beschreibt, wie Direct2D mit WIC verwenden:

http://msdn.microsoft.com/en-us/magazine/ee819134.aspx

+0

Ich glaube, WIC erfordert mindestens Vista auf einem Zielcomputer. Lokale Einschränkungen zwingen mich XP zu unterstützen und Code auf VS2005 zu schreiben. Wird WIC angesichts dieser Einschränkungen immer noch eine gute Wahl sein? – JasonGenX

+0

WIC ist für Windows XP mit SP2 und höher verfügbar. –