Как создать Delphi приложение, которое могло бы увеличивать часть рабочего стола наподобие лупы



Автор: Zarko Gajic

Есть программы, которые позволяют увеличивать определённую область экрана в районе курсора мышки. А вам слабо самостоятельно сделать такое приложение ?

Итак, приступим.

Нам понадобится одна форма, один элемент управления image, одна панель, кнопка, таймер и бегунок. Добавляем к форме картинку и панель. Размещаем остальные элементы управления на панели. Теперь всё готово к программированию. Но предварительно Вам необходимо изменить некоторые свойства у Ваших элементов управления.

А вот код, наиболее важной части программы:


// переменные
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

Готовый проект можно скачать здесь (6 K).

     

И напоследок, пара полезных компонент:

    Компонент позволяет делать stretches, slides, zooms и pushes. ZImage - бесплатный Delphi VCL компонент, который можно использовать для отображения различных изображений: картинок, факсов и т.д. Используя мышку, можно увеличивать изображение и уменьшать, а так же скроллировать. Можно показывать скроллинг справа и внизу. Alexander Rublinetsky.




Похожие по теме исходники

Delphi Magazine

Tetris DelphiX

Quake Delphi Sources

Delphi MMOG

 

Delphi Яндекс Директ

Delphi to HTML Converter

Проверка знаний Delphi

Is Delphi Dying Monitor

 

Autosave Delphi 7

Механизм вибростола




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте