Некоторое обычно используемое программное обеспечение для просмотра изображений имеет функцию, которая может увеличить локальные изображения.
Добавьте два компонента Timage в форму, с одним из компонентов TIMAGE, установленным на Image1, которое действует как носитель для исходного отображения изображения. У другого компонента Timage есть свойство имени, установленное на Image2, которое может отображать увеличенное изображение. Форма после добавления компонентов показана на рисунке 1.
Рисунок 1 Форма после добавления компонентов
Ядро этого примера - функция StretchBlt, которая использует функцию StretchBlt для достижения локального усиления изображения.
Процедура tform1.image1mouseMove (отправитель: tobject; shift: tshiftState; x, y: целое число);
Начинать
Strectblt (image2.canvas.handle, 0,0, image2.width, image2.height,
Image1.canvas.handle, X-20, Y-20,40,40, Srccopy);
Image2.Refresh;
Screen.cursors [1]: = LoadCursorFromFile ('Magnify.cur');
Self.cursor: = 1;
конец;
Программа сначала вызовет функцию strectblt, использует текущую позицию мыши в качестве центральной точки, выберите локальное изображение на компоненте Image1 с длиной боковой длины 40 и увеличит локальное изображение на компоненте Image2. Затем отображение компонента Image2 обновляется, вызывая метод обновления компонента Image2. Наконец, установите указатель мыши на новую форму.
Код программы выглядит следующим образом:
единица единицы 1;
интерфейс
Использование
Windows, сообщения, Sysutils, варианты, классы, графика, управления, формы,
Dialogs, extctrls, stdctrls;
тип
Tform1 = class (tform)
Image1: Timage;
Image2: Timage;
Процедура Image1mouseMove (отправитель: tobject; shift: tshiftstate; x, y: целое число);
Процедура FormouseMove (отправитель: tobject; shift: tshiftstate; x, y: целое число);
Частный
{Частные объявления}
публичный
{Публичные объявления}
конец;
вар
Форма1: tform1;
Выполнение
{$ R *.dfm}
Процедура tform1.image1mouseMove (отправитель: tobject; shift: tshiftState; x, y: целое число);
Начинать
Strectblt (image2.canvas.handle, 0,0, image2.width, image2.height, image1.canvas.handle, x-20, y-20,40,40, srccopy);
Image2.Refresh;
Screen.cursors [1]: = LoadCursorFromFile ('Magnify.cur');
Self.cursor: = 1;
конец;
Процедура tform1.formmouseMove (отправитель: tobject; shift: tshiftState; x, y: integer);
Начинать
Screen.cursors [1]: = crdefault;
Self.cursor: = 1;
конец;
конец.
Сохраните файл, затем нажмите F9, чтобы запустить программу.
Рисунок 2 Результаты работы программы
Увеличение изображений - это необходимая особенность отличного программного обеспечения для просмотра изображений.