Учимся увеличивать часть экрана под курсором

Опубиковано: 31.05.2008 г., автор: , просмотров: 38084

В этом уроке я хочу вам рассказать, как в Delphi увеличить определённую область экрана в районе курсора мышки. Ну что запускаем Delphi, нам понадобиться: Image с закладки Additional, TackBar (Win32), Timer (System) кидаем эти компоненты на форму. Теперь давайте установим свойство min компонента trackbar равным 1, а свойство interval компонента Timer также сделаем равным 1. Все основные действия происходят в Timer'е поэтому создаем обработчик событий OnTime именно на нем. Ниже приведен код данного события.

Delphi увеличиваем часто экрана исходник

procedure tform1.timer1timer(sender: tobject);
var
srect,drect,posforme :trect;
iwidth,iheight,dmx,dmy:integer;
itmpx,itmpy :real;
c :tcanvas;
kursor :tpoint;

begin
if not isiconic(application.handle) then
begin // Получаем координаты курсора
getcursorpos(kursor);

// posform представляет прямоугольник с
// координатами form (image control).
posforme:=rect(form1.left,
form1.top,
form1.left+form1.width,
form1.top+form1.height);
//Показываем magnified screen
//если курсор за пределами формы.
if not ptinrect(posforme,kursor) then begin
// Далее код можно использовать для увеличения выбранной
// части экрана.
iwidth:=image1.width;
iheight:=image1.height;
drect:=bounds(0,0,iwidth,iheight);
itmpx:=iwidth / (trackbar1.position * 4);
itmpy:=iheight / (trackbar1.position * 4);
srect:=rect(kursor.x,kursor.y,kursor.x,kursor.y);
inflaterect(srect,round(itmpx),round(itmpy));
//Получаем обработчик(handle) окна рабочего стола.
c:=tcanvas.create;
try
c.handle:=getdc(getdesktopwindow);
//Передаём часть изображения окна в tImage.
image1.canvas.copyrect(drect,c,srect);
finally
c.free;
end;
end;
// Обязательно обрабатываем все сообщения windows.
application.processmessages;
end;
end;

Как видите все просто. А теперь попробуйте сами ументшить часть экрана над которой находиться курсор. Слабо))

Не знаю почему, но многие задают вопрос как я вывожу деньги с кошелька WebMoney на банковскую карту Visa. лично я Уже давно пользуюсь WMR - Card RUR обмеником, опперативность и скорость обработки заявки всегда на высоте.



Похожие материалы

Последние из рубрики

88459524 03 Oct 2009 в 00:00 #
Да! Объясните что за ошибка? Хотя что за ошибка не надо, а лучше как от неё избавиться :D
Meken 26 Sep 2009 в 00:00 #
Только у меня после несколких минут программа начинает выдавать много ошибок? В чём может быть проблема?
maksell 23 Apr 2009 в 00:00 #
для уменьшения экрана - достаточно вместо деления использовать умножение... и вот, что у меня получилось:

procedure TForm1.Timer1Timer(Sender: TObject);
var
srect,drect,posforme :trect;
iwidth,iheight,dmx,dmy:integer;
itmpx,itmpy :real;
c :tcanvas;
kursor :tpoint;
begin
if not isiconic(application.handle) then
begin
getcursorpos(kursor);
posforme:=rect(form1.left,
form1.top,
form1.left+form1.width,
form1.top+form1.height);
if not ptinrect(posforme,kursor) then begin
iwidth:=image1.width;
iheight:=image1.height;
drect:=bounds(0,0,iwidth,iheight);
itmpx:=iwidth * (1.2);
itmpy:=iheight * (1.2);
srect:=rect(kursor.x,kursor.y,kursor.x,kursor.y);
inflaterect(srect,round(itmpx),round(itmpy));
c:=tcanvas.create;
try
c.handle:=getdc(getdesktopwindow);
image1.canvas.copyrect(drect,c,srect);
finally
c.free;
end;
end;
application.processmessages;
end;
end;
brome 02 Apr 2009 в 00:00 #
я для уменьшения заменил строки
itmpx:=iwidth / (trackbar1.position * 4);
itmpy:=iheight / (trackbar1.position * 4);
на
itmpx:=iwidth * (trackbar1.position div 4);
itmpy:=iheight * (trackbar1.position div 4);

зы - классный урок, всё наглядно расписано!
Максим Дмитриевич 13 Dec 2008 в 00:00 #
Сделал тоже самое только для WebBrowser1

заменил:
iwidth:=image1.width;
iheight:=image1.height;
на:
iwidth:=WebBrowser1.width;
iheight:=WebBrowser1.height;
и убрал:
image1.canvas.copyrect(drect,c,srect);
Не увеличивает, что забыл?

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