Сегодня хочу показать вам небольшой алгоритм, создающий движущиеся помехи на изображении, очень похожие на помехи от телевизора. Применяя этот алгоритм можно сделать screensaver? или напугать какого-нибудь ламера. Представляете, включает он компьютер, а на экране монитора идут помехи!
Киньте на форму таймер, задайте интервал 100 миллисекунд. Ещё поместите компонент Image, свойства Topи Leftсделайте равными 0, ширину и высоту картинки мы будем задавать программно. Больше никаких компонентов нам не потребуется.
Сначала сделаем код, который выполняется по событию Create формы.
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Windowstate:=wsMaximized; // Делаем форму полноэкранной и
Form1.Borderstyle:=bsNone;//убираемзаголовок
Image1.Width:=Screen.Width;//Делаем размеры Imageравными разрешению
Если вы запустите программу, то увидите что она сфотографировала рабочий стол и подменила его своим изображением. Возникает ощущение, что компьютер завис, потому что курсор мыши двигается, но ни одна кнопка или иконка не работает.
Теперь введём код в событие Timer1Timer? Который и добавляет помехи.
procedure TForm1.Timer1Timer(Sender: TObject);
var i, j: integer;
begin
For j:= 1 to Image1.Height do
begin
For i:= 1 to Image1.Width do
begin
If (i mod 2 = 1) and (j mod 2 = 1) then Image1.Canvas.Pixels[i, j]:=RGB(random(256), random(256), random(256));
If (i mod 2 = 0) and (j mod 2 = 0) then Image1.Canvas.Pixels[i, j]:=RGB(random(256), random(256), random(256));
end;
end;
end;
Как вы видете по событию таймера программа «обходит» все пиксели изображения и если координаты данного пикселя чётные (4, 8) или нечётные (3,5) задаёт им случайный цвет.
Можете поэкспериментировать с цветами вместо random(256) написав постоянное число в диапозоне 0..255 (1 байт).
Такжепередзавершающимend. Напишите:
Initialization
Randomize
Теперь поместите прогу в автозагрузку и наслаждайтесь :)) Правда есть одна проблемка - если ламер окажется не такой уж ламерюжный, то он легко сможет отрубить прогу в диспетчере задач. Но зачем нам такие ламеры? Благо мастдайных ламеров всегда поле непаханное!
Проделав лёгкие телодвижения эту прогу можно превратить в screensaver, сделав выход по нажатию кнопки клавиатуры или мыши. Эта заставка, конечно, будет малость неполноценной, т.к. она не будет отображаться в предварительном просмотре и показывать окно настроек.
Немного попозже обещаю написать как сделать полноценный screensaver.