그림판을 만들고 있습니다. 그림 확대 기능을 넣으려고 합니다. 이미지가 2개를 만들어 하나는 원본이미지를 display하고 다른 하나는 확대한 이미지를 display하는 것은 됩니다. 그러나 하나의 이미지에서 확대 및 축소를 하려고 할때는 어떻게 해야합니까?
아래는 이미지 두개에서 확대하는 프로그램입니다.
image1 : Timage;
image2 : Timage;
OriginP, DestinP : TPoint;
zoom : boolean; //확대기능을 선택했을때 true
.....
//이미지에 마우스가 다운되었을때 확대기능이 참이면 이미지에 마우스가 다운된 위치를
//Origin에 저장
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
zoom := true;
OriginP := Point(x,y);
end;
//마우스를 드래그한 상태에서 마지막 위치를 destinp에 저장
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if zoom then
begin
destinP := Point(x,y);
end;
end;
//이미지에서 마우스를 뗄때 동작
//마우스를 드래그한 영역이 image2에 확대되어 나타난다.
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
c:TCanvas;
begin
zoom := false ;
DestRect := Rect(0, 0, image2.width, image2.height);
srcRect := Rect(OriginP.x, OriginP.y, destinP.x, destinP.y);
c:=TCanvas.Create;
c.handle :=Image1.Canvas.Handle;
Image2.Canvas.CopyRect(destRect, C, srcRect);
end;
...
저는 여기에서 image1.Canvas.CopyRect을 쓰려고 했는데 확대는 되지만 디스플레이 되는 부분이 image1의 크기밖에 되지 않습니다. 실제 그림판에서 하나의 이미지에 확대되는 기능은 어떻게 구현되는 지요..
감사합니다....
많은 답변 부탁드립니다.