Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
비트맵을 리사이즈...!
비트맵을 화면크기(판넬)크기에 맞추어 리사이즈 할려고 어제 밤부터 내내 헤메었지만 도저히 몰겠습니다.
#리사이즈(원래크기의 비트맵을 화면크기(판넬)에 맞추어 배율 그대로 축소하거나 확대)
도움을 부탁드립니다.
델초보가 고수님들의 고견을 기다립니다.
3
COMMENTS
최용일
•
2000.03.20 09:03
아래와 같이 DC(TCanvas.Handle)의 맵핑모드를 바꾸어주시면 됩니다.
함수에 대한 자세한 설명은 도움말을 보세요...
var
R:TRect;
Source: TBitmap; // 원본 이미지
Dest: TBitmap; // 확대or축소된 이미지
begin
...
// 확대or축소하고자 하는 크기, 아래의 경우는 Panel1의 크기에 맞춘다.
Dest.Width := Panel1.Width;
Dest.height := Panel1.Height;
SetMapMode(Dest.Canvas.Handle, MM_ANISOTROPIC);
SetWindowExtEx(Dest.Canvas.Handle, Source.Width, Source.Height, nil);
SetViewportExtEx(Dest.Canvas.Handle, Dest.Width, Dest.height, nil);
R := Rect(0, 0, Source.Width, Source.Height);
Dest.Canvas.CopyRect(R, Source.Canvas, R);
...
end;
0
0
삭제
수정
댓글
최진실
•
2000.03.20 08:40
초용일님 답변을 올려주셔서 감사합니다.
올려주신 코드를 약간 수정해서 그렸습니다.
근데 하얀여백이 그려집니다.
이걸없앨수 없습니까.
Dest.Height와 Width를 구해보니까 여백을 포함한 길이가 나옵니다.
제가 원하는 것은 이미지를 축소하여 Center모드나 Tile모드로 그려주고 싶습니다.
제가 초보라서 좀 무지한 질문을 많이 합니다.
그렇지만 이해해 주시기 바랍니다. (계속 이 Hint를 쓰는 것 같습니다.)
델초보가...
var
R:TRect;
Source: TBitmap; // 원본 이미지
Dest: TBitmap; // 확대or축소된 이미지
begin
if Pic.Bitmap.Width = 0 then Exit;
Source:=Pic.Bitmap;
Dest:=TBitmap.Create;
Dest.Width := Panel7.Width;
Dest.height := Panel7.Height;
SetMapMode(Dest.Canvas.Handle, MM_ISOTROPIC);
SetWindowExtEx(Dest.Canvas.Handle, Source.Width, Source.Height, nil);
SetViewportExtEx(Dest.Canvas.Handle, Dest.Width, Dest.height, nil);
//Dest.Canvas.FloodFill(0, 0, 0, fsBorder);
Dest.Canvas.FillRect(Image1.ClientRect);
R := Rect(0 ,0 , Source.Width, Source.Height);
Dest.Canvas.Draw(0,0,Source);
Image1.Picture.Bitmap.Assign(Dest);
Dest.Destroy;
최용일 wrote:
> 아래와 같이 DC(TBitmap.Canvas.Handle)의 맵핑모드를 바꾸어주시면 됩니다.
>
> 함수에 대한 자세한 설명은 도움말을 보세요...
>
> var
> R:TRect;
> Source: TBitmap; // 원본 이미지
> Dest: TBitmap; // 확대or축소된 이미지
> begin
> ...
> // 확대or축소하고자 하는 크기, 아래의 경우는 Panel1의 크기에 맞춘다.
> Dest.Width := Panel1.Width;
> Dest.height := Panel1.Height;
>
> SetMapMode(Dest.Canvas.Handle, MM_ANISOTROPIC);
> SetWindowExtEx(Dest.Canvas.Handle, Source.Width, Source.Height, nil);
> SetViewportExtEx(Dest.Canvas.Handle, Dest.Width, Dest.height, nil);
>
> R := Rect(0, 0, Source.Width, Source.Height);
> Dest.Canvas.CopyRect(R, Source.Canvas, R);
> ...
> end;
0
0
삭제
수정
댓글
최용일
•
2000.03.20 09:29
저는 최용일입니다. 초용일이 아님니다.
아래의 소스만으론 이상이 없습니다. 원본 비트맵을 확인해 보세요...
> Source:=Pic.Bitmap; // <-- Pic.Bitmap이 제대로 그려지나 확인해 보세요.
> ...
> Dest.Canvas.Draw(0,0,Source); // <-- CopyRec을 쓰세요...
위의 부분말고는 소스상의 이상한 점은 없는것 같습니다.
일단 축소된 비트맵 이미지를 가지고 있다면 센터/타일을 그리 어려운 일이
아닌데요... 센터는 중간값을 구해서 가운데에다 CopyRect으로 그려주고,
타일은 for문을 이용해서 차례로 그려주는거죠. for문을 쓰실줄 아신다면
조금만 생각하시면 하실 수 있습니다.
최진실 wrote:
> 최용일님 답변을 올려주셔서 감사합니다.
> 올려주신 코드를 약간 수정해서 그렸습니다.
>
> 근데 하얀여백이 그려집니다.
> 이걸없앨수 없습니까.
> Dest.Height와 Width를 구해보니까 여백을 포함한 길이가 나옵니다.
>
> 제가 원하는 것은 이미지를 축소하여 Center모드나 Tile모드로 그려주고 싶습니다.
>
> 제가 초보라서 좀 무지한 질문을 많이 합니다.
> 그렇지만 이해해 주시기 바랍니다. (계속 이 Hint를 쓰는 것 같습니다.)
>
> 델초보가...
>
> var
> R:TRect;
> Source: TBitmap; // 원본 이미지
> Dest: TBitmap; // 확대or축소된 이미지
> begin
> if Pic.Bitmap.Width = 0 then Exit;
> Source:=Pic.Bitmap;
>
> Dest:=TBitmap.Create;
> Dest.Width := Panel7.Width;
> Dest.height := Panel7.Height;
>
> SetMapMode(Dest.Canvas.Handle, MM_ISOTROPIC);
> SetWindowExtEx(Dest.Canvas.Handle, Source.Width, Source.Height, nil);
> SetViewportExtEx(Dest.Canvas.Handle, Dest.Width, Dest.height, nil);
>
> //Dest.Canvas.FloodFill(0, 0, 0, fsBorder);
> Dest.Canvas.FillRect(Image1.ClientRect);
>
> R := Rect(0 ,0 , Source.Width, Source.Height);
> Dest.Canvas.Draw(0,0,Source);
>
>
> Image1.Picture.Bitmap.Assign(Dest);
>
> Dest.Destroy;
>
>
>
> 최용일 wrote:
> > 아래와 같이 DC(TBitmap.Canvas.Handle)의 맵핑모드를 바꾸어주시면 됩니다.
> >
> > 함수에 대한 자세한 설명은 도움말을 보세요...
> >
> > var
> > R:TRect;
> > Source: TBitmap; // 원본 이미지
> > Dest: TBitmap; // 확대or축소된 이미지
> > begin
> > ...
> > // 확대or축소하고자 하는 크기, 아래의 경우는 Panel1의 크기에 맞춘다.
> > Dest.Width := Panel1.Width;
> > Dest.height := Panel1.Height;
> >
> > SetMapMode(Dest.Canvas.Handle, MM_ANISOTROPIC);
> > SetWindowExtEx(Dest.Canvas.Handle, Source.Width, Source.Height, nil);
> > SetViewportExtEx(Dest.Canvas.Handle, Dest.Width, Dest.height, nil);
> >
> > R := Rect(0, 0, Source.Width, Source.Height);
> > Dest.Canvas.CopyRect(R, Source.Canvas, R);
> > ...
> > end;
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
이수정
2000.03.20 06:27
0
COMMENTS
/
0
LIKES
일반 애플리케이션을 ActiveX로 변화할때...질문..
양은주
•
2000.03.20 06:21
1
COMMENTS
/
0
LIKES
[컴포넌트]프로퍼티는 상속받을 수 없나요?
이정욱
•
2000.03.20 12:33
음.. 아래의 의미는 상속이 아닌것 같네여. 원하시는 컴포넌트 제작시 그냥 property에 TGlyph라는 객체...
싸이코
2000.03.20 03:12
0
COMMENTS
/
0
LIKES
lgubs 카메라 드라이버 정보좀 알고 싶은데요?()
궁금해요
•
2000.03.20 03:01
1
COMMENTS
/
0
LIKES
델파이 가격이 궁금합니다.
최용일
•
2000.03.20 04:06
아래로 연락해 보세요... 국내 총판-INPRISE 전 제품 Borland Tool관련 (주)다우기술 서울시 강...
백종희
2000.03.20 01:57
0
COMMENTS
/
0
LIKES
궁금한게 있어서용^^ 아는사람은 대답해줘용 지발여
양은주
•
2000.03.20 00:41
1
COMMENTS
/
0
LIKES
[컴포넌트]컴포넌트 제작에 관한 질문 입니다.
최용일
•
2000.03.20 02:50
형변환만 해주세요... 모들형식으로 띄우실려면 Show대신에 ShowModal을 쓰시면 됩니다. > procedure...
최진실
•
2000.03.20 00:05
3
COMMENTS
/
0
LIKES
비트맵을 리사이즈...!
비트맵을 화면크기(판넬)크기에 맞추어 리사이즈 할려고 어제 밤부터 내내 헤메었지만 도저히 몰겠습니다. #리사이즈(원래크기의 비트맵을 화면크기(판넬)에 맞추어 배율 그대로 축소하거나 확대) 도움을 부탁드립니다. 델초보가 고수님들...
최용일
•
2000.03.20 09:03
아래와 같이 DC(TCanvas.Handle)의 맵핑모드를 바꾸어주시면 됩니다. 함수에 대한 자세한 설명은 도움말...
최진실
•
2000.03.20 08:40
초용일님 답변을 올려주셔서 감사합니다. 올려주신 코드를 약간 수정해서 그렸습니다. 근데 하얀여백...
최용일
•
2000.03.20 09:29
저는 최용일입니다. 초용일이 아님니다. 아래의 소스만으론 이상이 없습니다. 원본 비트맵을 확인해 보...
sun
•
2000.03.19 23:16
1
COMMENTS
/
0
LIKES
StringGrid로 데이타 출력하기?
강민주
•
2000.03.20 06:25
sun wrote: > 출력하고자 하는 데이타를 쿼리한다음 스트링그리드로 데이타를 출력하고자 합니다. > 출...
최두승
2000.03.19 22:51
0
COMMENTS
/
0
LIKES
Query한 결과를 다른 Table에 저장하는 방법
구철호
2000.03.19 19:15
0
COMMENTS
/
0
LIKES
delphi 5 standard에서요..
델LOVE
•
2000.03.19 11:03
3
COMMENTS
/
0
LIKES
DBGRID 에서 맨마지막행..(1급). 먼저감사
장은석
•
2000.03.19 12:34
델LOVE wrote: > DBGRID 에서 마지막행의 처음열을 가지고와서 그 값(문자형)을 숫자형으로 바꾸어 > 그...
델LOVE
•
2000.03.20 09:19
장은석 wrote: > 델LOVE wrote: > > DBGRID 에서 마지막행의 처음열을 가지고와서 그 값(문자형)을 숫자...
델LOVE
•
2000.03.20 08:11
장은석 wrote: > 델LOVE wrote: > > DBGRID 에서 마지막행의 처음열을 가지고와서 그 값(문자형)을 숫자...
급한사람
•
2000.03.19 09:53
1
COMMENTS
/
0
LIKES
메모리 문제?? 아시는분 답좀해주세여
이정욱
•
2000.03.20 12:35
음.. 무엇인가 동적으로 생성을 하시고 없애주질 않는것 같네여.. 그럴때는 디버깅 툴을 이용하시면 조...
박성민
2000.03.19 08:49
0
COMMENTS
/
0
LIKES
서버구축을 하고싶어요
백록화
2000.03.19 08:41
0
COMMENTS
/
0
LIKES
ms sql 7.0 과의 연동
최은정
•
2000.03.19 05:57
1
COMMENTS
/
0
LIKES
델파이 기능 질문 - ERD 자동으로 안그려지나?
장은석
•
2000.03.19 13:33
최은정 wrote: > 파워빌더는 테이블관계를 한눈에 볼수 있는것으로 알고 있는데.. > 델파이에서는 그런 ...
한일석
•
2000.03.19 13:16
5
COMMENTS
/
0
LIKES
SQL문 사용 조회후 Read-Only Dataset해제 방법
한일석
•
2000.03.20 22:33
안녕하세요.. 고수님들의 조언을 근거로 제가 여러가지 방법을 시도한 결과 정석이 아닐지라도 해결했습니...
김두현
•
2000.03.19 07:35
한일석 wrote: > 안녕하세요.. 델파이 초보자인데요. 급한 문제가 발생해서 질문을 합니다. > > 아래와...
한일석
•
2000.03.19 13:30
답변 정말 감사힙니다. 고수님이 가르쳐 주신 방법으로 해보았는데 계속 read-only dataset이라 수정이 ...
하얀까마귀
•
2000.03.19 05:54
안녕하세요 하얀까마귀 입니다. 쿼리의 경우에는 바로 수정 삭제등이 불가능 합니다. 그걸 가능하게 할...
한일석
•
2000.03.19 13:31
답변 정말 감사힙니다. 쿼리를 쓰면서 가능하게 할려면. UpdateSQL Component를 사용해서 SQL Component...
김영욱
2000.03.19 03:14
0
COMMENTS
/
0
LIKES
treeview를 윈도우 탐색기처럼 만들려구하는데...
이빈
•
2000.03.19 02:35
2
COMMENTS
/
0
LIKES
트렌스버튼 대해서..
최용일
•
2000.03.19 08:22
보내드리겠습니다. 이빈 wrote: > 트렌스버튼 컴포넌트를 구할수 없을까요... > 제가 좀 필요하거든요...
이빈
•
2000.03.20 17:43
최용일 wrote: > 보내드리겠습니다. > > 이빈 wrote: > > 트렌스버튼 컴포넌트를 구할수 없을까요... ...
김지호
2000.03.19 01:05
0
COMMENTS
/
0
LIKES
① 특수문자 구할수없나여?
이윤환
•
2000.03.18 23:42
1
COMMENTS
/
0
LIKES
edit에 대해...
최용일
•
2000.03.18 23:55
다음과 같이 해보세요... procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin ...
최진실
2000/03/20 00:05
Views
342
Likes
0
Comments
3
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
함수에 대한 자세한 설명은 도움말을 보세요...
var
R:TRect;
Source: TBitmap; // 원본 이미지
Dest: TBitmap; // 확대or축소된 이미지
begin
...
// 확대or축소하고자 하는 크기, 아래의 경우는 Panel1의 크기에 맞춘다.
Dest.Width := Panel1.Width;
Dest.height := Panel1.Height;
SetMapMode(Dest.Canvas.Handle, MM_ANISOTROPIC);
SetWindowExtEx(Dest.Canvas.Handle, Source.Width, Source.Height, nil);
SetViewportExtEx(Dest.Canvas.Handle, Dest.Width, Dest.height, nil);
R := Rect(0, 0, Source.Width, Source.Height);
Dest.Canvas.CopyRect(R, Source.Canvas, R);
...
end;