Содержание материала

InitScreen - Скриншот

 

Процедура InitScreen, вызываемая из обработчика события OnCreate, используется для получения скриншота текущего изображения десктопа, устанавливая начальную позицию redRect и рисуя сетку. Код, который будет рисовать сетку необязателен.

 Чтобы получить скриншот десктопа, используется GetDC для GetDesktopWindow. API функция BitBt используется для передачи картинки десктопа в DesktopBitmap. GetDC(GetDesktopWindow) получает дескриптор контекста устройства дисплея для указанного окна - окна возвращённого функцией GetDesktopWindow. В заключении DesktopBitmap ассоциируется с компонентой Image1. Если что-то не ясно, то советую заглянуть справичные файлы по Delphi.

 Начальная позиция redRect выбирается случайным образом. Trunc(Random * DELTA) возвращает целое число от 0 до DELTA. Далее, redRect рисуется в точке gx, gy, используя функцию CopyRect объекта Canvas. Опять же, если Вы не знакомы с алгоритмом рисования Delphi, то советую порыться в справке.

В конце, при помощи MoveTo и LineTo рисуется сетка. Сетка необязательна и используется только для того, чтобы лучше различать границы блоков.

  

Code:

 

procedure InitScreen;

var

i, j: integer;

begin

//получаем битмап десктопа

DesktopBitmap := TBitmap.Create;

with DesktopBitmap do

begin

   Width := Screen.Width;

   Height := Screen.Height;

end;

BitBlt(DesktopBitmap.Canvas.Handle,

0,0,Screen.Width,Screen.Height,

GetDC(GetDesktopWindow),0,0,SrcCopy);

 

Shuffler.Image1.Picture.Bitmap := DesktopBitmap;

 

//изначальные координаты redRect

Randomize;

gx := Trunc(Random * DELTA);

gy := Trunc(Random * DELTA);

 

Shuffler.Image1.Canvas.CopyRect(

Rect(rW * gx, rH * gy, rW * gx + rW, rH * gy + rH),

redRect.Canvas,

Rect(0,0,rW,rH));

 

//рисуем сетку

for i:=0 to DELTA-1 do

begin

   Shuffler.Image1.Canvas.MoveTo(rW * i,0);

   Shuffler.Image1.Canvas.LineTo(rW * i,Screen.Height);

 

   Shuffler.Image1.Canvas.MoveTo(0, rH * i);

   Shuffler.Image1.Canvas.LineTo(Screen.Width, rH * i);

end;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить