Попытка рисовать на канве компонента, который видим, приводит к тому, что система на вывод каждой точки перерисовывает прямоугольник компонента. Тем более, что отрисовка точками самая медленная графическая операция.
Выход такой. Рисовать надо на канве, которая в этот момент не видна (самое простое - канва bitmap). Затем нарисованное скопировать на видимую канву.
Примерно так:
Код:
procedure TForm1.Button6Click(Sender: TObject);
var
BM : TBitMap;
begin
BM := TBitMap.Create;
BM.Width := Image1.Width;
BM.Height := Image1.Height;
with BM.Canvas do begin
Brush.Color := Image1.Color;
...
for n:=1 to nn do begin
xx:=random(form1.Image1.ClientWidth-m) ;
yy:=random(form1.Image1.ClientHeight);
Pixels[xx,yy]:=clwhite;
end;
...
end;
Form1.Image1.Canvas.CopyRect(Image1.ClientRect, BM.Canvas, Image1.ClientRect);
BM.Free;
end;