Zitat von
Dax:
Allerdings solltest du bei dem obigen Vorschlag beachten, dass du nicht weisst, welches Pixel bereits transparent war und nachher nicht weisst, welches Pixel welchen Transparenzwert besitzt.
stimmt....das war das, was ich meinte.
aber wie frage ich ab, ob der aktuelle pixel bereits transparent ist?
hab es nun so:
Delphi-Quellcode:
function text_opacity(
const src,dest: TBitmap; opacity: byte): Boolean;
[...]
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 := ((r/255)*opacity) + (r2*(255-opacity));
gg := ((g/255)*opacity) + (g2*(255-opacity));
bb := ((b/255)*opacity) + (b2*(255-opacity));
// Pixel neu zeichnen
dest.Canvas.Pixels[w,h] :=
RGB(rr,gg,bb);
end;
end;
end;
air
P.S. Ne dumme Frage...ist mein Stil ordentlich?