Wie wird der Canvas-Bereich mit reinem GDI eingefärbt (mit dem angegebenen Alpha-Wert eingefärbt)?

8

Ich möchte den Bereich einer Zeichenfläche mit reinen Windows GDI (also ohne GDI +, DirectX oder ähnlich, kein OpenGL, kein Assembler oder Bibliotheken von Drittanbietern).

Ich habe die folgende Funktion erstellt und möchte wissen, ob es einen effizienteren oder einfacheren Weg gibt, dies zu tun:

%Vor%

Für die Vorstellung, was diese Funktion machen soll, sehen Sie die folgenden (diskriminierenden :-) Bilder:

Und der Code, der this image in der gezeigten Weise auf die obere linke Seite des Formulars rendern kann oben:

%Vor%

Gibt es eine effizientere Möglichkeit, dies mit reinem GDI oder Delphi VCL zu tun?

    
TLama 10.05.2012, 20:40
quelle

1 Antwort

4

Haben Sie die Leinwandzeichnung mit AlphaBlend ausprobiert?

etwas wie

%Vor%

kombiniert mit einem FillRect für die Mischfarbe

Update : Und hier ist ein Code, so nah wie möglich an Ihrer Schnittstelle, aber reine VCL.
Könnte nicht so effizient sein, aber viel einfacher (und etwas portabel).
Wie Remy sagte, um ein Formular auf eine pseudo-persistente Weise zu malen, müssten Sie OnPaint verwenden ...

%Vor%     
François 10.05.2012, 20:55
quelle

Tags und Links