Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
Canvas 에서의 Zoom In/Out 구현
Canvas에서 Zoom In/Out 구현하는 간단한 방법 좀 가르쳐 주세요.
1
COMMENTS
김영대
•
1999.11.27 18:32
도토리 wrote:
> Canvas에서 Zoom In/Out 구현하는 간단한 방법 좀 가르쳐 주세요.
// Image1에 원본 그림을 불러다 놓고 컴파일하셔서 사용하세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
DragOrigin: TPoint;
MovePoint: TPoint;
FinalRect: TRect;
IsFocusRect: Boolean; // 드래그 상태(True)을 표시
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// 마우스 드래그를 처음 시작할때
if ((Button = mbLeft) and not(IsFocusRect))then
begin
DragOrigin := Point(x,y); // 마우스 드래그 시작위치(x,y) 저장
MovePoint := DragOrigin;
IsFocusRect := True; // 마우스 드래그를 시작함
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if IsFocusRect then
begin
// 바로전의 선택 직사각형을 지운다
Image1.Canvas.DrawFocusRect(rect(DragOrigin.x, DragOrigin.y, MovePoint.X, MovePoint.Y));
// 마우스 드래그 시작위치부터 현재 위치까지 선택 직사각형을 그린다
Image1.Canvas.DrawFocusRect(rect(DragOrigin.x, DragOrigin.y, X, Y));
// 최근 선택 직사각형을 저장한다
FinalRect := rect(DragOrigin.x, DragOrigin.y, X, Y);
// 최근 드래그 위치를 저장
MovePoint := point(x,y);
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
bmp: TBitmap;
begin
if (IsFocusRect and (Button = mbLeft)) then
begin
// 선택한 영역의 이미지를 Image2로 복사
bmp := TBitmap.Create; // 임시저장용 Bitmap
try
bmp.width := ord(FinalRect.Right - FinalRect.Left);
bmp.height := ord(FinalRect.Bottom - FinalRect.Top);
bmp.Canvas.CopyRect(rect(0, 0, bmp.width,bmp.height), image1.Canvas,FinalRect);
Image2.Canvas.StretchDraw(Image2.ClientRect, bmp);
finally
bmp.free;
end;
// 바로전의 선택 직사각형을 지우고 변수들을 초기화함
Image1.Canvas.DrawFocusRect(FinalRect);
IsFocusRect := False;
FinalRect := Rect(0,0,0,0);
end;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
송기원
1999.11.27 02:34
0
COMMENTS
/
0
LIKES
컴퓨터의 IP Address변경방법..
구은미
•
1999.11.27 02:32
1
COMMENTS
/
0
LIKES
PageControl의 Caption에 Image 넣는 방법 좀~~~
이재식
•
1999.11.27 03:49
구은미 wrote: > 안녕하세요. > > PageControl의 Caption에 image를 넣고 싶은데요 ... 어떻게 하는지...
효정이
•
1999.11.27 02:22
1
COMMENTS
/
0
LIKES
급합니다.컴 부팅때문에.............
혀노
•
1999.11.27 23:56
프로그램을 삭제했는데,,아직 system.ini에서 그 장치를 가리키고 있어서 나는 에러이기때문에,,,영어번역 ...
도토리
•
1999.11.27 02:12
1
COMMENTS
/
0
LIKES
Canvas 에서의 Zoom In/Out 구현
Canvas에서 Zoom In/Out 구현하는 간단한 방법 좀 가르쳐 주세요.
김영대
•
1999.11.27 18:32
도토리 wrote: > Canvas에서 Zoom In/Out 구현하는 간단한 방법 좀 가르쳐 주세요. // Image1에 원본 ...
조영욱
1999.11.27 01:47
0
COMMENTS
/
0
LIKES
고맙습니다. 영대님
강윤환
•
1999.11.27 00:42
1
COMMENTS
/
0
LIKES
소켓통신에서 바이트단위 데이터 송수신은 어떻게?
김봉학
•
1999.11.29 19:47
강윤환 wrote: > 제목대로입니다. > > 간단하게 서버에서 데이터를 주기적으로 받아오는 프로그램을 만...
여용구
•
1999.11.27 00:35
3
COMMENTS
/
0
LIKES
[급] Quick Repor에서 ...
갤럭시
•
1999.11.27 04:48
여용구 wrote: > QuickReport에서 > 다음 과 같은 형태로 출력을 하고자 합니다.. > > 번호 이름 ...
초보델
•
2001.04.14 03:31
갤럭시 wrote: > 여용구 wrote: > > QuickReport에서 > > 다음 과 같은 형태로 출력을 하고자 합니다.....
이재식
•
1999.11.27 03:55
여용구 wrote: > QuickReport에서 > 다음 과 같은 형태로 출력을 하고자 합니다.. > > 번호 이름 ...
박철민
1999.11.26 23:04
0
COMMENTS
/
0
LIKES
(급구!!!!!) 델파이 개발툴 자료.......
kimmia
1999.11.26 22:01
0
COMMENTS
/
0
LIKES
Exception EOleSysError가 발생했습니다.
박성훈
•
1999.11.26 21:15
1
COMMENTS
/
0
LIKES
db의 상태체크
김영대
•
1999.11.27 00:33
박성훈 wrote: > LAN으로 파라독스db를 공유하고 있습니다. > 한대의 컴이 공유된 db를 건드렸을 때 Lock...
jhlee
•
1999.11.26 20:45
1
COMMENTS
/
0
LIKES
동적 component생성시 Owner문제...
신호성
•
1999.11.27 04:21
jhlee wrote: > 여러 unit에서 사용하기위한 공통 함수들을 모아놓은 form없는 unit을 만들었는데 > 임시...
조영욱
•
1999.11.26 21:31
2
COMMENTS
/
0
LIKES
스피드버튼에 마우스가 가면 Glyph변화 급함
김영대
•
1999.11.27 00:34
조영욱 wrote: > 스피드버튼의 flat속성이 true 되어 있습니다. > 이때 마우스가 스피드 버튼 위에 가면...
조영욱
•
1999.11.27 02:03
조영욱 wrote: > 스피드버튼의 flat속성이 true 되어 있습니다. > 이때 마우스가 스피드 버튼 위에 가면...
윤소영
•
1999.11.26 20:21
2
COMMENTS
/
0
LIKES
정보처리기사 실기시험
혀노
•
1999.11.27 03:29
앞에 Alias설정 코드를 안적었는데,,,아래 적을게요 procedure ~.~create(); var path : string; ...
혀노
•
1999.11.27 03:25
정보처리기사 시험에서 alias설정은 그렇게 하면 감독관 앞에서 실행시 에러가 나기 쉽거든요, Explore에서...
희야
•
1999.11.26 20:04
1
COMMENTS
/
0
LIKES
dbgrid
혀노
•
1999.11.27 00:51
뭘 물어보시는지 잘 모르겠는데요,,,,,음 이게 맞을려나,,,, DBGrid를 더블 클릭하면 필드Editer가 나오는...
최영구
•
1999.11.26 19:42
1
COMMENTS
/
0
LIKES
인스펙터와 같은 인터페이스 구현방법....
김영대
•
1999.11.27 01:03
최영구 wrote: > 비주얼 베이직에서 속성창과 같이 데이터베이스 필드와 연결하려고 합니다...... > > ...
이재민
•
1999.11.26 19:31
1
COMMENTS
/
0
LIKES
TEdit 에 관한 질문
chaser
•
1999.11.26 20:06
이재민 wrote: > 안녕하세요? > 메일을 통해 질문요지가 잘 전달될지 모르겠는데요.... > > 폼에 TE...
열심희
•
1999.11.26 19:11
1
COMMENTS
/
0
LIKES
Midas에서 text형은 어떻게...?★
전철호
•
1999.11.27 01:24
열심희 wrote: > 안녕하세요? > Midas를 공부하다보니 질문할 내용들이 너무 많군요... > > 테이블에 ...
delpong
•
1999.11.26 18:57
1
COMMENTS
/
0
LIKES
(긴급!!)삼각함수에 대해 조언을
김영대
•
1999.11.27 00:55
delpong wrote: > 밑에 라디안으로 바꾸라고 하셨는데....쩝 > 잘이해가 않되는디.. 좀 구체적으로 갈켜...
정유라
•
1999.11.26 17:58
1
COMMENTS
/
0
LIKES
(다시한번)비주얼베이직에서 만든 DLL을 델파이에서 사용..
류민철
•
1999.11.26 20:01
정유라 wrote: > 비주얼베이직에서 만든 DLL을 델파이에서 사용하려고 합니다. > DLL이름은 PrjDLLTest....
류한규
•
1999.11.26 17:25
1
COMMENTS
/
0
LIKES
CloseFile(F) 후 폼피드되는 이유을 아시는분???
박성훈
•
1999.11.28 00:35
류한규 wrote: > 안녕하십니까? > > 같은 질문을 여러번 올립니다. > > > Printer.Canvas를 이용...
도토리
1999/11/27 02:12
Views
216
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> Canvas에서 Zoom In/Out 구현하는 간단한 방법 좀 가르쳐 주세요.
// Image1에 원본 그림을 불러다 놓고 컴파일하셔서 사용하세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Image2: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
DragOrigin: TPoint;
MovePoint: TPoint;
FinalRect: TRect;
IsFocusRect: Boolean; // 드래그 상태(True)을 표시
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// 마우스 드래그를 처음 시작할때
if ((Button = mbLeft) and not(IsFocusRect))then
begin
DragOrigin := Point(x,y); // 마우스 드래그 시작위치(x,y) 저장
MovePoint := DragOrigin;
IsFocusRect := True; // 마우스 드래그를 시작함
end;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if IsFocusRect then
begin
// 바로전의 선택 직사각형을 지운다
Image1.Canvas.DrawFocusRect(rect(DragOrigin.x, DragOrigin.y, MovePoint.X, MovePoint.Y));
// 마우스 드래그 시작위치부터 현재 위치까지 선택 직사각형을 그린다
Image1.Canvas.DrawFocusRect(rect(DragOrigin.x, DragOrigin.y, X, Y));
// 최근 선택 직사각형을 저장한다
FinalRect := rect(DragOrigin.x, DragOrigin.y, X, Y);
// 최근 드래그 위치를 저장
MovePoint := point(x,y);
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
bmp: TBitmap;
begin
if (IsFocusRect and (Button = mbLeft)) then
begin
// 선택한 영역의 이미지를 Image2로 복사
bmp := TBitmap.Create; // 임시저장용 Bitmap
try
bmp.width := ord(FinalRect.Right - FinalRect.Left);
bmp.height := ord(FinalRect.Bottom - FinalRect.Top);
bmp.Canvas.CopyRect(rect(0, 0, bmp.width,bmp.height), image1.Canvas,FinalRect);
Image2.Canvas.StretchDraw(Image2.ClientRect, bmp);
finally
bmp.free;
end;
// 바로전의 선택 직사각형을 지우고 변수들을 초기화함
Image1.Canvas.DrawFocusRect(FinalRect);
IsFocusRect := False;
FinalRect := Rect(0,0,0,0);
end;
end;
end.