Pasek_RGB

0

Mam kod który na image rusuje kolory RGB a dokładniej jedną wartość i jej
odcień ale
mam mały problem kod generuje/rysuje mi pasek z kolorem strasznie wolno
prawie 3 sekundy co na to poradzić, jak to zmienić.

var
Bitmap : Tbitmap;
i,j : integer;
begin
Bitmap := Tbitmap.Create;
Try
for i:=0 to 255 do begin
for j:=0 to 15 do begin
Bitmap.PixelFormat:=pf32bit;
Bitmap.Width:=image1.Width;
Bitmap.Height:=image1.Height;
Bitmap.Canvas.Pixels[i,j]:=RGB(i,0,0);
image1.Picture.Graphic:=Bitmap;
end;
end;
FINALLY
Bitmap.Free;
end;
image1.Refresh;
end;
---= pozdrawiam Oskar =- (delphi 6 GG:2792614)

0

mozesz uzyc DirectX z DelphiX :&gt&gt&gt&gt&gt&gt&gt&gt&gt&gt&gt--Vroc
&ltDelphi Knight&gt

0

No sam sie zastanow. Napchales do srodka petli kupe rzeczy, ktore sa potrzebne tylko raz, a u Ciebie musza sie wykonac 256*16=4096 razy. Daj tak:

var
Bitmap : Tbitmap;
i,j : integer;
color :TColor;
begin
Bitmap := Tbitmap.Create;
Bitmap.PixelFormat:=pf32bit;
Bitmap.Width:=image1.Width;
Bitmap.Height:=image1.Height;
Try
for i:=0 to 255 do begin
Color:=RGB(i,0,0);
for j:=0 to 15 do
Bitmap.Canvas.Pixels[i,j]:=Color;
end;
FINALLY
image1.Picture.Graphic:=Bitmap;
Bitmap.Free;
end;
image1.Refresh;
end;

Najwazniejsze jest wyrzucenie PixelFormat, Height i Width. Od tego robi sie blyskawicznie. Czy obliczanie funkcji RGB 256 razy zamiast 4096 razy ale stosowanie zmiennej Color daje cos nie wiem, bo nie chcialo mi sie robic pomiarow. Wydaje mi sie tez, ze try..finally jest tu zbedne, nie sadze, by ustawianie pixeli dalo wyjatek. A try..finally tez pewnie troche czasu zzera, choc moze nie, nie wiem. --Pawel

Delphi6

1 użytkowników online, w tym zalogowanych: 0, gości: 1