Hallo!
Ich sitze gerade an einem Programm, dass eine Grafik mit einem sogenannten TiltShift-Filter (das was aussieht, wie auf der Modellbahn) versehen soll. Dazu ist es notwendig, drei Arrays mit Farbwerten zu befüllen. Der Code des Verfahrens stammt von Roy Magne Klever (
http://rmklever.com/?p=452).
Code:
var aR, aG, aB: array[0..255] of Byte;
procedure TfrmMain.FormCreate(Sender: TObject);
var i, p: Integer;
pfad: string;
C: ColorRef;
B, G, R: Byte;
begin
ImgLoaded := False;
TheImage := TBitmap.Create;
Img := TBitmap.Create;
Img.PixelFormat:= pf24bit;
// Setup selection color
C := ColorToRGB(clHighlight);
B := Byte(C shr 16);
G := Byte(C shr 8);
R := Byte(C);
// hier kommen Fehler bei der Bereichsprüfung
for i := 0 to 255 do
begin
aR[i] := (R - i) shr 1 + i;
aG[i] := (G - i) shr 1 + i;
aB[i] := (B - i) shr 1 + i;
end;
imgView.Picture.Bitmap.Width := 1;
imgView.Picture.Bitmap.Height := 1;
imgView.Picture.Bitmap.Canvas.Pixels[0, 0] := $001A1A1A;
LY := -1;
PT1.X:= 20;
PT1.Y:= imgView.Picture.Bitmap.Height shr 1;
PT2.X:= imgView.Picture.Bitmap.Width - 21;
PT2.Y:= imgView.Picture.Bitmap.Height shr 1;
DoNow:= False;
end;
Die kommentierte Schleife wirf aber Fehler bei der Bereichsprüfung.
Nun meine Fragen:
1. Was macht die Schleife überhaupt?
2. Wie könnte man das so programmieren, dass es bereichskonform wird?
Danke für Eure Antworten!