일반적으로 사용되는 일부 사진보기 소프트웨어에는이 기능을 시뮬레이션하기 위해 로컬 이미지를 확대 할 수있는 기능이 있습니다.
원래 이미지 디스플레이의 캐리어 역할을하는 Timeage 구성 요소 중 하나가 이미지 1로 설정된 두 개의 타임 매지 구성 요소를 형태에 추가하십시오. 다른 타임 지 구성 요소에는 이름 속성이 image2로 설정되어 있으며 확대 된 이미지를 표시 할 수 있습니다. 구성 요소를 추가 한 후 양식이 그림 1에 나와 있습니다.
그림 1 구성 요소를 추가 한 후 양식
이 예제의 핵심은 StretchBlt 함수를 사용하여 로컬 이미지 증폭을 달성합니다.
절차 tform1.Image1mouseMove (Sender : Tobject; Shift : TshiftState; X, Y : Integer);
시작하다
StretchBlt (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;
끝;
이 프로그램은 먼저 StretchBLT 함수를 호출하고 마우스의 현재 위치를 중심 지점으로 사용하고 측면 길이가 40 인 Image1 구성 요소의 로컬 이미지를 선택하고 Image2 구성 요소의 로컬 이미지를 확대합니다. 그런 다음 Image2 구성 요소의 새로 고침 메소드를 호출하여 Image2 구성 요소의 표시가 새로 고침됩니다. 마지막으로 마우스 포인터를 새로운 모양으로 설정하십시오.
프로그램 코드는 다음과 같습니다.
단위 유닛 1;
인터페이스
용도
창, 메시지, 시스템, 변형, 클래스, 그래픽, 컨트롤, 양식,
대화, extctrls, stdctrls;
유형
tform1 = 클래스 (tform)
이미지 1 : 시계;
Image2 : 시계;
절차 이미지 1MousEmove (Sender : Tobject; Shift : TshiftState; X, Y : Integer);
프로 시저 FormmousEmove (Sender : Tobject; Shift : TshiftState; X, Y : Integer);
사적인
{개인 선언}
공공의
{공개 선언}
끝;
var
form1 : tform1;
구현
{$ r *.dfm}
절차 tform1.Image1mouseMove (Sender : Tobject; Shift : TshiftState; X, Y : Integer);
시작하다
StretchBlt (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 (Sender : Tobject; Shift : TshiftState; X, Y : Integer);
시작하다
screen.cursors [1] : = crdefault;
self.cursor : = 1;
끝;
끝.
파일을 저장 한 다음 F9를 눌러 프로그램 실행 결과가 그림 2에 나와 있습니다.
그림 2 프로그램 작동 결과
이미지를 확대하는 것은 훌륭한 사진보기 소프트웨어의 필수 기능입니다.이 예제는 소형 코드뿐만 아니라 높은 실행 효율로 매우 간단하고 쉬운 방법을 제공합니다.