Ciao a tutti, con il seguente codice:
dopo aver ottenuto la matrice di pixel dello schermo, un timer provvede a "ingrigire" tutti i pixel per dare l'effetto bianco e nero. Tutta via, per ridisegnare una volta uno schermo 1280x800 ci mette quasi 10 secondi!codice:procedure TForm1.FormCreate(Sender: TObject); begin Dkb:=TCanvas.Create; Dkb.Handle:=GetWindowDC(0); end; procedure TForm1.Timer1Timer(Sender: TObject); var i,j:integer; c:TColor; r,g,b,m:byte; begin for j := 0 to Screen.Height do for i := 0 to Screen.Width do begin c:=Dkb.Pixels[i,j]; r:=GetRValue(ColorToRGB(c)); g:=GetGValue(ColorToRGB(c)); b:=GetBValue(ColorToRGB(c)); m:=(r+g+b) div 3; dkb.Pixels[i,j]:= m Shl 16 Or m Shl 8 Or m; end; end;Come si potrebbe ottimizzare l'algoritmo per farlo funzionare diciamo in realtime?
Grazie

Come si potrebbe ottimizzare l'algoritmo per farlo funzionare diciamo in realtime?
Rispondi quotando