Habe die Prozedur jetzt mal so umgeschrieben, dass man sie für Rechteckige Bereiche nutzen kann.
(kann man sicher noch optimieren)
Delphi-Quellcode:
procedure Helligkeit(C:TCanvas; Faktor:Real; x,y,x2,y2: integer);
var Color: LongInt;
tmp1, tmp2, R, G, B: Integer;
begin
with C
do
for tmp1:= ClipRect.Left
to x2
do
for tmp2:= ClipRect.Top
to y2
do
begin
Color:=ColorToRGB(Pixels[tmp1+x,tmp2+Y]);
R := Round(GetRValue(Color)*Faktor);
G := Round(GetGValue(Color)*Faktor);
B := Round(GetBValue(Color)*Faktor);
if R>255
then R:=255;
if G>255
then G:=255;
if B>255
then B:=255;
Pixels[tmp1+x,tmp2+Y]:=
RGB(R,G,B);
end;
end;
Beispiel für Einbindung:
Helligkeit(canvas,1.2,50,50,150,150);
1.2 steht für den Helligkeitsfaktor (größer als 1: heller, kleiner als 1: dunkler)
50,50 stehen für die Werte x und y, bei denen das hellere oder dunklere Rechteck beginnt,
150,150 stehen für die Endwerte x und y, bei denen das Rechteck aufhört.