

Bei 1980x1080 komme ich auf knapp 10 Sekunden.

Code: Alles auswählen
procedure TForm1.FormPaint(Sender: TObject);
var x,y: integer;
p: PBGRAPixel;
image: TBGRABitmap;
var w,h:integer;
tick: QWord;
begin
tick := GetTickCount64;
w:=1000;
h:=1000;
image := TBGRABitmap.Create(w,h);
for y := 0 to image.Height-1 do
begin
p := image.Scanline[y];
for x := 0 to image.Width-1 do
begin
p^.red := x*256 div image.Width;
p^.green := y*256 div image.Height;
p^.blue := 0;
p^.alpha := 255;
inc(p);
end;
end;
image.InvalidateBitmap; // geändert durch direkten Zugriff
image.Draw(Canvas,0,0,True);
image.free;
Caption := IntToStr(GetTickCount64 - Tick);
end;
Genau. Wollte eben fast das Gleiche posten.Ally hat geschrieben: Sa 28. Mai 2022, 11:10 Ich hätte hier noch eine Variante die, nur mit "Bordmitteln", einfach und schnell ist.
danke für den Tipp. So wird das Ganze noch mal schneller.Kleiner Tipp: Die Farben muss man nicht unbedingt "umrechnen".
Mit "uses FPImage" kann man colYellow und colGreen verwenden.