Ich möchte ein Layersystem in meiner Anwendung implementieren und dachte darüber nach, eine Reihe transparenter Bitmaps zu erstellen, Inhalte hinzuzufügen und sie dann übereinander zu blättern. Wie kann dies geschehen, ohne jedes Pixel auf (0,0 , 0,0). Ich benutze Pure win32, nicht MFC, danke.Erstellen einer transparenten Bitmap mit GDI?
Antwort
Was meinst du mit transparent?
Wenn Sie nach partieller (zu voller) Transparenz suchen, dann ist AlphaBlend die GDI-API zu verwenden. Das Laden von Bitmaps mit Alpha ist knifflig - Das einzige Format, das die Basis Windows API zum Laden von Bitmaps mit Alpha unterstützt, ist eine 32bpp .BMP Datei mit einem Alpha Kanal in den oberen 8 Bits jedes Bytes - und die unteren Bytes sollten vormultipliziert werden.
Es ist möglich, GDI + zu verwenden, um eine Vielzahl von Bildformaten mit Alpha zu laden - PNG ist wahrscheinlich das Beste, und blit auf eine 32bpp DIBSection, so dass Sie AlphaBlend und plain-alte GDI-Funktionen verwenden können.
Wenn Sie eine einfache Transparenzmaske anstelle eines vollständigen Alphakanals wünschen, können Sie TransparentBlt zusammen mit einem Farbschlüssel zum Ausblenden von Bereichen einer Bitmap beim Blitzen verwenden.
GDI unterstützt keine Transparenz in Bitmaps und im Allgemeinen. Erwägen Sie die Verwendung von GDI+.
- 1. wie einen native GDI-Bitmap aus einer .net Bitmap erhalten
- 2. Ein seltsames Problem mit gdi + Bitmap!
- 3. WPF Bitmap Bindung mit GDI + Ausnahme
- 4. Ist es möglich, BitBlt direkt aus einer GDI + -Bitmap?
- 5. Erstellen Sie ein Bild mit transparentem Hintergrund mit GDI +?
- 6. nicht erstellen kann Monochrome Bitmap von HBITMAP von GDI + Bitmap bekam :: GetHBITMAP
- 7. kann nicht zeichnen auf GDI + Bitmap-Objekt
- 8. Wie erstelle ich eine Bitmap mit einem transparenten Hintergrund in einem transparenten Formular?
- 9. So ändern Sie die Hintergrundfarbe einer gespeicherten transparenten Bitmap
- 10. Android Bitmap speichern ohne transparenten Bereich
- 11. Wie man Bitmap in Windows GDI dreht?
- 12. Konvertieren von GDI + 's Bild * in Bitmap *
- 13. Erstellen einer zentrierten skalierten Bitmap
- 14. überlappende Bilder mit GDI +
- 15. Erstellen eines transparenten Panels
- 16. überlagernde Bilder mit GDI +
- 17. Android: Erstellen einer transparenten Box mit Elementen innerhalb
- 18. C#: simulieren gdi GetBitmapBits Funktion und GdiFlush, um ein Byte-Array mit einer Bitmap zu füllen
- 19. drawBitmap auf Canvas mit einer transparenten Bitmap, ersetzen Sie die ursprünglichen Pixel
- 20. Ist es möglich, BitBlt direkt auf ein GDI + Bitmap?
- 21. Erstellen einer BMP-Datei (Bitmap) in C
- 22. Zeichnen einer transparenten Schaltfläche
- 23. Rendern einer transparenten Hülle
- 24. Rendern eines transparenten Cursors in Bitmap, der Alphakanal erhält?
- 25. C# winforms GDI +
- 26. Wie kann ich ein PatternBrush mit transparentem Hintergrund (GDI) zeichnen?
- 27. C# GDI +, Erstellen eines LinearGradientBrush in einer Schleife (Speicherlecks)
- 28. GDI + Fehler auf Bitmap.Save
- 29. Erstellen einer skalierten Bitmap mit createScaledBitmap in Android
- 30. erstellen ziehbar von Bitmap
Es sortof - es hat Unterstützung für die transparente Mischung von einem Bitmap auf ein anderes, mit Alpha-Komponenten in der Bitmap durch AlphaBlend. Es gibt auch die ungeraden Erweiterungen, um Aero in Fenstern zu unterstützen, die auch zählen könnten. Mit dem allgemeinen Fall hast du recht. –
Es gibt auch TransparentBlt, aber bei Verwendung von 32-Bit-Bildern (z. B. solche mit Transparenz) ist AlphaBlend der richtige Weg. – dlanod