DELPHI от компании Borland (теперь переименованной в компанию INPRISE) на данный момент является самой удобной программой для Windows.
Один из инструментов планирования. Многие думают, что DELPHI представляет собой инструмент разработки баз данных. На самом деле DELPHI.
Эффективные программы для Windows можно разрабатывать с головокружительной скоростью.
Теперь мы будем использовать DELPHI для написания практической программы копирования экрана. Посмотрите, картинка ниже
Это пример копирования регионального экрана после запуска запрограммированной программы. Неплохо!
Талантливые дизайнеры компании Borland используют объект Canvas (Tcanvas) для инкапсуляции большей части графики в Windows.
Функция вывода, которая позволяет нам работать с экраном Windows более интуитивно понятным способом.
И вам не придется беспокоиться о головной боли, связанной с функциями Windows API. Следующая короткая программа может реализовать всю
Изображение на экране копируется.
var //объявление переменной
Полноэкранный режим: Tbitmap;
FullscreenCanvas:TCanvas;
постоянный ток: HDC;
//------------------------------------------------ ----------
DC := GetDC (0); //Получаем DC экрана, параметр 0 относится к экрану
FullscreenCanvas := TCanvas.Create //Создаем объект CANVAS;
FullscreenCanvas.Handle := DC //Назначаем DC экрана для HANDLE;
Полноэкранный режим.Canvas.CopyRect
(Прямоугольник (0, 0, экран.Ширина,экран.Высота),
полноэкранный холст,
Rect(0, 0, Screen.Width, Screen.Height));
//Копируем весь экран в BITMAP
FullscreenCanvas.Free //Освободить объект CANVAS;
ReleaseDC (0, DC); //Освободить DC;
//Объект SCREEN — это объект экрана, предопределенный DELPHI, просто используйте его напрямую.
Прочитав приведенный выше код, вы обнаружите, что написать программу копирования экрана с помощью DELPHI действительно очень просто.
Конечно, вам нужно написать практическую программу копирования экрана. Одного приведенного выше кода недостаточно. Давайте поговорим об этом ниже.
Ниже приведены основные идеи программирования:
1. Реализация полноэкранного копирования
Сначала скройте программу копирования экрана, а через определенный период времени используйте вышеуказанную программу для копирования экрана.
копия.
2. Реализация региональной копии
Чтобы добиться копирования области, вам нужно использовать небольшую хитрость. Сначала вызовите программу полноэкранного копирования, чтобы скопировать весь экран.
загрузить, а затем отобразить скопированное изображение на экране, а затем разрешить пользователю
Выберите нужную область и, наконец, скопируйте выбранную пользователем область.
Реализация программирования:
1. Сначала откройте проект с помощью DELPHI3.
2. Поместите компонент TPANEL на ФОРМУ, установите ALIGN=ALTOP, а затем выберите панель компонента ДОПОЛНИТЕЛЬНО.
TSCROLBOX, поместите его в ФОРМУ, установите ALIGN=ALCLIENT, а затем поместите
Объект ТИМАГЭ.
3. Разместите на ПАНЕЛИ 4 кнопки: ПОЛНЫЙ ЭКРАН, REGIN, СОХРАНИТЬ и ВЫХОД.
4. Сначала сделайте то, что легко сделать, и напишите код в событии CLICK кнопки EXIT.
процедура TForm1.ExitClick(Отправитель: TObject);
начинать
закрывать;
конец;
5. Далее необходимо реализовать полноэкранное копирование. Установите таймер TTIMER на FROM и установите для параметра ENABLED значение.
ЛОЖЬ, ИНТЕРВАЛ установлен на 500, что означает, что он активируется каждые полсекунды. Дважды щелкните компонент TIMER и напишите следующее:
код.
процедура TForm1.Timer1Timer(Отправитель: TObject);
вар
Полноэкранный режим: Tbitmap;
FullscreenCanvas:TCanvas;
постоянный ток: HDC;
начинать
timer1.Enabled:=false; //Отменяем часы
Полноэкранный режим := TBitmap.Create //Создаем BITMAP для хранения изображений.
Полноэкранный.Ширина := экран.ширина;
Fullscreen.Height := screen.Height;
DC := GetDC (0); //Получаем DC экрана, параметр 0 относится к экрану
FullscreenCanvas := TCanvas.Create //Создаем объект CANVAS;
FullscreenCanvas.Handle := DC;
Полноэкранный режим.Canvas.CopyRect
(Rect(0, 0, screen.Width, screen.Height), полноэкранный холст,
Rect(0, 0, Screen.Width, Screen.Height));
//Копируем весь экран в BITMAP
FullscreenCanvas.Free //Освободить объект CANVAS;
ReleaseDC (0, DC); //Освободить DC;
//******************************
image1.picture.Bitmap:=fullscreen;//Назначаем скопированное изображение объекту IMAGE
image1.Width:=fullscreen.Width;
image1.Height:=fullscreen.Height;
fullscreen.free; //Выпуск растрового изображения
form1.WindowState:=wsNormal; //Восстанавливаем состояние окна;
form1.show; //Окно отображения
messagebeep(1); //Звуковой сигнал подаст один звуковой сигнал, сообщая о том, что изображение было захвачено.
конец;
6. Следующий код на кнопке ПОЛНЫЙ ЭКРАН очень прост.
процедура TForm1.FullscreenClick(Отправитель: TObject);
начинать
form1.WindowState:=wsMinimized //Сворачиваем окно программы
form1.hide; //Скрываем программу
timer1.enabled:=true; //Открываем таймер
конец;
7. После копирования изображения его естественно нужно сохранить. В дело вступает кнопка СОХРАНИТЬ.
Загрузите код.
процедура TForm1.Save1Click(Отправитель: TObject);
начинать
если сохраненныйдиалог1.Выполнить, то
начинать
form1.Image1.Picture.SaveToFile(savedialog1.имя файла)
конец;
конец;
8. Ниже представлена реализация копирования зоны. Затем создайте ФОРМУ, установите для BorderStype значение bsNone, чтобы ее можно было отобразить.
Для полноэкранного режима поместите на него компонент TIMAGE, установите для ALIGN значение ALCLIENT и поместите TTIMER.
виджет, программа виджета ТАЙМЕР очень похожа на приведенную выше, поскольку первое, чего ему нужно добиться, — это полноэкранное копирование.
каури.
процедура TForm2.Timer1Timer(Отправитель: TObject);
вар
Полноэкранный режим: Tbitmap;
FullscreenCanvas:TCanvas;
постоянный ток: HDC;
начинать
таймер1.Включено:=ложь;
Полноэкранный режим := TBitmap.Create;
Полноэкранный.Ширина := экран.ширина;
Fullscreen.Height := screen.Height;
DC := GetDC (0);
FullscreenCanvas := TCanvas.Create;
FullscreenCanvas.Handle := DC;
Fullscreen.Canvas.CopyRect(Rect
(0, 0, экран.Ширина, экран.Высота), полноэкранный холст,
Rect(0, 0, Screen.Width, Screen.Height));
FullscreenCanvas.Free;
ReleaseDC (0, DC);
image1.picture.Bitmap:= полноэкранный режим;
image1.Width:=fullscreen.Width;
image1.Height:=fullscreen.Height;
полноэкранный.бесплатно;
form2.WindowState:=wsMaximized;
форма2.показать;
звуковой сигнал (1);
сгибх:=-1;
складной:=-1;
image1.Canvas.Pen.mode:=pmnot; //Режим пера инвертирован
image1.canvas.pen.color:=clblack; //Перо черное;
image1.canvas.brush.Style:=bsclear //Пустая кисть;
флаг:=истина;
конец;
9. На компоненте TIMAGE необходимо написать две программы событий: одну ONMOUSEDOWN, а другую.
Это ONMOUSEMOVE.
10. Вы можете вернуться к идее копирования регионов. В этот раз мы уже это сделали.
получается и также отображается на экране. Нажмите левую кнопку мыши, чтобы указать начало области. Затем переместите мышь к.
Между началом координат и мышью находится прямоугольник. Он меняется при перемещении мыши. Нажмите кнопку мыши еще раз.
Нажмите левую кнопку цели. На данный момент область, заключенная в прямоугольник, — это изображение, которое мы хотим получить.
11. Таким образом, MOUSEDOWN имеет две обработки ответов, см. следующую процедуру.
процедура TForm2.Image1MouseDown
(Отправитель: TObject; Кнопка: TMouseButton;
Сдвиг: TShiftState; X, Y: целое число);
вар
ширина, высота: целое число;
новый битмап: Tbitmap;
начинать
if (trace=false) then // TRACE указывает, отслеживается ли мышь
начать //Нажмите левую кнопку мыши в первый раз, чтобы начать отслеживать мышь.
флаг: = ложь;
с image1.canvas сделать
начинать
moveTo(foldx,0);
LineTo(foldx,screen.height);
moveto(0,foldy);
lineto(screen.width,foldy);
конец;
х1:=х;
у1:= у;
старыйx:=x;
старый: = й;
трассировка:=истина;
image1.Canvas.Pen.mode:=pmnot; //Режим пера инвертирован
//Снова рисуем прямоугольник в исходном месте, что эквивалентно стиранию прямоугольника.
image1.canvas.pen.color:=clblack; //Перо черное;
image1.canvas.brush.Style:=bsclear;//Пустая кисть
конец
еще
начать //Второй щелчок означает, что прямоугольник получен.
//Копируем его в компонент IMAGE в FORM1.
х2:=х;
у2:=у;
трассировка: = ложь;
image1.canvas.rectangle(x1,y1,oldx,oldy);
ширина: = абс (x2-x1);
высота: = абс (y2-y1);
форма1.изображение1.Ширина:=Ширина;
form1.image1.Height:=Высота;
newbitmap:=Tbitmap.create;
newbitmap.width:=ширина;
newbitmap.height:=высота;
newbitmap.Canvas.CopyRect
(Прямоугольник (0, 0, ширина, высота), form2.image1.canvas,
Прямоугольник (x1, y1,x2,y2)); //Копировать
form1.image1.picture.bitmap:=newbitmap //Помещаем его в ИЗОБРАЖЕНИЕ ФОРМЫ;
новыйbitmap.free;
форма2.скрыть;
форма1.показать;
конец;
конец;
12. Обработка MOUSEMOVE заключается в непрерывном рисовании и стирании прямоугольников между началом координат и текущим положением мыши.
Кроме прямоугольника.
процедура TForm2.Image1MouseMove
(Отправитель: TObject; Shift: TShiftState; X,
Y: целое число);
начинать
if track=true then //Вы отслеживаете мышь?
начать //Да, сотрим старый прямоугольник и нарисуем новый
с image1.canvas сделать
начинать
прямоугольник(x1,y1,oldx,oldy);
Прямоугольник(x1,y1,x,y);
старыйx:=х;
старый: = й;
конец;
конец
else if flag=true then //Рисуем крест там, где находится мышь
начинать
с image1.canvas сделать
начинать
moveTo(foldx,0); //Стираем старый крест
LineTo(foldx,screen.height);
moveto(0,foldy);
lineto(screen.width,foldy);
moveTo(x,0); //Рисуем новый крест
LineTo(x,screen.height);
перейти к (0, у);
lineto(screen.width,y);
сгибх:=х;
складной: = y;
конец;
конец;
конец;
13. Хорошо, вернемся к написанию кода кнопки «РЕГИОН».
процедура TForm1.RegionClick(Отправитель: TObject);
начинать
форма1.Скрыть;
форма2.скрыть;
form2.Timer1.Enabled:=true;
конец;
Хорошо, мы наконец-то успешно завершили его. Давайте запустим его еще раз и скопируем красивый экран! Смотреть
DELPHI — не только отличный инструмент для разработки баз данных, но и отличный инструмент для написания WINDOWS.
Хороший помощник для программы. Не будем не восхищаться: Великолепный DELPHI!
Цзя Сюэцзе, переулок Юхе, город Нинбо