Обладая такими способностями, вы сможете, например, разлиновать поверхность экрана как в тетради в клеточку, выводить пугающие пользователя надписи и даже создать эффект окаменение экрана, если, конечно, разработаете алгоритм выполнения данной задачи.
Я покажу как рисовать на экране на примере разлиновки:
Сначала объявите глобальную переменную
Scr: TCanvas;
Затем по событию OnCreate() для формы напишите такой код:
Code: |
Scr := TCanvas.Create; Scr.Handle := GetDC(HWND_DESKTOP);
|
По событию OnDestroy() такой:
Scr.Free;
Обработчик события по нажатию на кнопку пусть выглядит так:
Code: |
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin i := 0; while i < 1024 do begin with Scr do begin MoveTo(i, 0); LineTo(i, 768); i := i + 10; end; end; i := 0; while i < 768 do begin with Scr do begin MoveTo(0, i); LineTo(1024, i); i := i + 10; end; end; Button1.Refresh; end; |
Для этого надо воспользоваться функциями API. Получить контекст чужого окна, либо всего экрана:
function GetDC(Wnd: HWnd): HDC;
где Wnd - указатель на нужное окно, или 0 для получения контекста всего экрана. И далее, пользуясь функциями API, нарисовать все что надо.
Code: |
procedure DrawOnScreen; var ScreenDC: hDC; begin ScreenDC := GetDC(0); {получить контекст экрана} Ellipse(ScreenDC, 0, 0, 200, 200); {нарисовать} ReleaseDC(0, ScreenDC); {освободить контекст} end; |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!