Недавно добавленные исходники

•  TDictionary Custom Sort  507

•  Fast Watermark Sources  874

•  3D Designer  1 804

•  Sik Screen Capture  1 457

•  Patch Maker  1 460

•  Айболит (remote control)  1 388

•  ListBox Drag & Drop  1 158

•  Доска для игры Реверси  21 296

•  Графические эффекты  1 337

•  Рисование по маске  1 275

•  Перетаскивание изображений  1 086

•  Canvas Drawing  963

•  Рисование Луны  802

•  Поворот изображения  755

•  Рисование стержней  802

•  Paint on Shape  486

•  Генератор кроссвордов  747

•  Головоломка Paletto  659

•  Теорема Монжа об окружностях  839

•  Пазл Numbrix  607

•  Заборы и коммивояжеры  835

•  Игра HIP  551

•  Игра Go (Го)  522

•  Симулятор лифта  544

•  Программа укладки плитки  505

•  Генератор лабиринта  560

•  Проверка числового ввода  520

•  HEX View  596

•  Физический маятник  522

•  Задача коммивояжера  556

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Как создать 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-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram