Q&A

  • 그림판에서 확대 기능에 관한 질문
그림판을 만들고 있습니다. 그림 확대 기능을 넣으려고 합니다. 이미지가 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의 크기밖에 되지 않습니다. 실제 그림판에서 하나의 이미지에 확대되는 기능은 어떻게 구현되는 지요..



감사합니다....

많은 답변 부탁드립니다.



0  COMMENTS