Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Как создать 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).

     

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

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