Zitat:
//dito * $1000000 verschiebt um 24bit nach links
Danke Klaus genau das wollte ich wissen, natürlich auch um die Lösungen
Warum jetzt ShiftLeft? r, g, b nach Links?
Ein anderes kannst du bitte noch mal drüber schauen?
Delphi-Quellcode:
1:
begin
d := round(Fade * 10);
for Y := 0
to h
do
begin
for X := 0
to w
do
begin
if (X > 0)
and (Y > 0)
and (X < w - 1)
and (Y < h - 1)
then
begin
r := 0;
g := 0;
b := 0;
a := 0;
for dy := -1
to 1
do
begin
for dx := -1
to 1
do
begin
c := SpectrumData2D[X + dx, Y + dy];
//a := a + (Int64((c and $FF000000) div $1000000) And 255);
a := a + (c
shr 24)
and 255;
//r := r + (c and $FF0000) div $10000;
r := r + (c
and RGB(255, 0, 0))
div 65536;
//g := g + (c and $FF00) div $100;
g := g + (c
and 65280)
div 256;
b := b + (c
and 255);
end;
end;
r := r
div 9;
g := g
div 9;
b := b
div 9;
a := a
div 9 - d;
c := b
or (g * $100)
or (r * $10000);
if a > 127
then
SpectrumData2D[X, Y] := c
or ((a - 256)
shl 24)
else
SpectrumData2D[X, Y] := c
or (a
shl 24);
end
else
SpectrumData2D[X, Y] := 0;
end;
end;
end;
gruss