Ich versuche, einen benutzerdefinierten Bitmap-Pinsel mit Transparenz zu erstellen, aber es scheint nicht wie erwartet zu funktionieren. Wenn Sie sich dieses Beispiel ansehen. Fügen Sie den Code hinzu und verbinden Sie die Farbe, erstellen und zerstören Sie Ereignisse.
%Vor% Dieser Code erzeugt zwei gemalte Blöcke. Die linke Seite wird mit einem Bitmap-Pinsel und die rechte Seite mit einer Reihe von Canvas.Draw
-Aufrufen gemalt.
Ich möchte, dass der Pinsel mit Transparenz gemalt wird, ähnlich wie bei Verwendung eines Schraffurpinsels. Diese SO-Antwort scheint anzuzeigen, dass es möglich ist:
Wie zeichne ich eine patternBrush mit transparentem Hintergrund (GDI)?
1) Ich habe versucht, eine durchgehende Hintergrundfarbe zu verwenden, anstatt bsClear
zu verwenden. Dies macht den Hintergrund nur weiß.
Wenn ich clFuchsia
verwende, dann ist die Farbe Fuchsia. Ich habe auch versucht, den Hintergrund clFuchsia
zu malen und dann TransparentColor
auf clFuchsia
zu setzen. Die Canvas.Draw
-Option malt mit Transparenz und der Pinsel nicht.
2) Ich habe versucht, den Alpha-Kanal direkt mit dem folgenden Code einzustellen:
%Vor%Und dann Aufruf dieser Routine unmittelbar nachdem das Rechteck mit der Hintergrundfarbe gemalt wurde.
%Vor% Ich weiß, dass der Alpha-Kanal funktioniert, denn wenn ich einen Alpha-Wert von 255 übertrage, erscheint er auch in Canvas.Draw
in Schwarz.
3) Ich habe versucht, zu testen, indem ich einen Musterpinsel erstellt habe und diesen statt der Bitmap zugewiesen habe. Das ergibt genau die gleichen Ergebnisse. FBrush ist ein HBRUSH.
%Vor%Und das Einstellen des Pinsels wie folgt:
%Vor% 4) Ich habe versucht, SetBkMode
wie in der SO-Antwort oben angegeben aufzurufen. Das machte überhaupt keinen Unterschied.
Bearbeiten
5) Ich habe gerade mit einer Monochrome Bitmap getestet und es hat das gleiche Problem. Das Bild ist mit einem weißen Hintergrund und einem schwarzen Vordergrund für den Pinsel und transparent für Canvas.Draw
gemalt.
Und im Konstruktor:
%Vor%In der Farbe setzen wir den Handle und nicht die Bitmap-Eigenschaft.
%Vor%Versuchen Sie, diese Nullfarbe vor der Zeichenschleife zu löschen.
Canvas.Clear (TAlphaColorRec.Null);
Grüße. Pau.
Tags und Links delphi delphi-xe7