Ciao a tutti, con il seguente codice:
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;
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! Come si potrebbe ottimizzare l'algoritmo per farlo funzionare diciamo in realtime?
Grazie