Habe
hier mal was gefunden und zurechtgeschnippselt:
Delphi-Quellcode:
procedure DoSomething(Input:TBitmap);
type
PixArray = array [1..3] of Byte;
var
P: ^PixArray;
X,
Y:integer;
Hell:Byte;
DHell:int64;
const
paWhite:PixArray=(255, 255, 255);
paBlack:PixArray=(0, 0, 0);
begin
DHell:=0;
for Y:=0 to Input.Height-1 do
begin
P:= Input.ScanLine[Y];
for X:=0 to Input.Width-1 do
begin
Hell:=(P^[1]+P^[2]+P^[3])div 3;
P^[1]:=Hell;
P^[2]:=Hell;
P^[3]:=Hell;
DHell:=DHell+Hell;
Inc(P);
end;
end;
for Y:=0 to Input.Height-1 do
begin
P:= Input.ScanLine[Y];
for X:=0 to Input.Width-1 do
begin
if(P^[1] > DHell)
then P^:=paWhite
else P^:=paBlack;
Inc(P);
end;
end;
end;
Es tut sich nix... warum?
LDer.
Image1.Repaint;
Hilft manchmal... auch hier. Ergebnis: etwa 1000-fache Geschwindigkeit, wooohoooo!