Zeichnen Leicht Transparente Blaue Rechteck in Nativen Win32-GDI
Wie erstelle ich ein blaues Rechteck mit einem alpha/Transparenz-Wert von 0,5 (also 50% Transparenz) im Nativen Win32 C++?
Mithilfe eines Makros wie RGBA() schlägt fehl, ich bin mir nicht sicher, wie kann ich geben Sie den alpha-Wert des Pinsels.
SetDCPenColor(hdc, RGBA(255,255,0,127));
SetDCBrushColor(hdc, RGBA(255,255,0,127));
Rectangle(hdc, 0, 0, width, height);
InformationsquelleAutor Jake M | 2012-06-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die AlphaBlend-Funktion -
http://msdn.microsoft.com/en-us/library/windows/desktop/dd183351(v=vs. 85).aspx
http://www.codeproject.com/Articles/286/Using-the-AlphaBlend-function
InformationsquelleAutor Superman
Ich bin mir ziemlich sicher, du wirst Sie brauchen GDI+, es zu tun, aber es sollte da sein, mit GDI:
Auf der plus-Seite, GDI+, wenn auch nicht ganz so schnell, hat mehr Funktionen und visuelle Ergebnisse, und ist Objekt-orientiert, was auch bedeutet, Sie nicht brauchen, um über alle diese
SelectObject
undDeleteObject
Anrufe.Bewusst sein, dass es ein paar zusätzliche Schritte beim initialisieren/beenden des Programms, um die GDI+ verwenden, und dass alles in der
Gdiplus
namespace, und-lgdiplus
.Wenn Sie wirklich brauchen, GDI, die einzige Lösung die ich kenne ist AlphaBlend, das ist wirklich eine komplexere Methode als nur das zeichnen von Formen auf den Gerätekontext. Es ist immer gut, wenn man mit dem GDI+, da es noch in Gebrauch ist, und ist viel einfacher zu verwenden als GDI.
Ich habe nicht Lesen zu viel hinein, aber ich erinnerte mich, dass es noch schneller. Es bei der Suche, scheinen Sie im Recht zu sein. GDI+ hat noch mehr Möglichkeiten und liefert bessere Bilder, obwohl. Wenn Sie wirklich besorgt über die Geschwindigkeit (und gleichzeitig die Qualität), DirectX ist ein extrem guter Kandidat.
Ja, es gibt keinen Zweifel daran, dass GDI+ erzeugt bessere Bilder und hat mehr Funktionen. +1.
InformationsquelleAutor chris