Einzelnen Beitrag anzeigen

Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#9

Re: halbtransparenten text auf TImage?

  Alt 29. Okt 2004, 17:31
Nein.
Ich will ja einen schlichten Text auf ein Bild malen.
Da ich im 24er Bitmap die Transparenz aber nicht abfragen kann,
könnte ich doch in dem src-Bitmap als Hintergrundfarbe eine Farbe setzen, die ich beim Funktionsaufruf angebe.

So kann ich anstatt die Transparenz abzufragen, die gegebene Farbe abfragen.
Wenn der akt. Pixel dieser Farbe entspricht, bekommt der Pixel den Farbwert der Dest-Bitmap die diesem Pixel entspricht.

Hoffe nun geklärt zu haben

/edit:
mit Trunc:

Delphi-Quellcode:
function TForm1.text_opacity(const src,dest: TBitmap; opacity: byte): Boolean;
var
w,h: integer;
col, col2: Longint;
r1, g1, b1: byte;
r2, g2, b2: byte;
rr, gg, bb: byte;
begin
        for h:=0 to src.Height do
        begin
                for w:=0 to src.Width do
                begin
                        // Src:
                        col := ColorToRGB(src.Canvas.Pixels[w,h]); // Pixelfarbe
                        // Nun R G und B Wert holen:
                        r1 := GetRValue(col);
                        g1 := GetGValue(col);
                        b1 := GetBValue(col);

                        // Dest:
                        col2 := ColorToRGB(dest.Canvas.Pixels[w,h]); // Pixelfarbe
                        // Nun R G und B Wert holen:
                        r2 := GetRValue(col2);
                        g2 := GetGValue(col2);
                        b2 := GetBValue(col2);

                        // Neue RGB Werte errechnen
                        rr := (Trunc(r/255)*opacity) + (Trunc(r2/255)*(255-opacity));
                        gg := (Trunc(g/255)*opacity) + (Trunc(g2/255)*(255-opacity));
                        bb := (Trunc(b/255)*opacity) + (Trunc(b2/255)*(255-opacity));

                        // Pixel neu zeichnen
                        dest.Canvas.Pixels[w,h] := RGB(rr,gg,bb);
                end;
        end;
end;
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat