Delphi - база знаний

Как создать лупу для рабочего стола?


Как создать лупу для рабочего стола?



Автор: Zarko Gajic

// переменные
var Srect,Drect,PosForme:TRect;
    iWidth,iHeight,DmX,DmY:Integer;
    iTmpX,iTmpY:Real;


    C:TCanvas;
    Kursor:TPoint;
// Увеличиваем экран, если приложение не свёрнуто в иконку
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 / (Slider.Position * 4);
  iTmpY:=iHeight / (Slider.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; // IsIconic

Взято с Исходников.ru



Содержание раздела