C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3145] Re:[질문] PaintBox 의 그림이 다른윈도우에 가려지면 지워져요.
박지훈.임프 [cbuilder] 4021 읽음    2000-03-21 00:00
D빌더 님이 쓰신 글 :
: 안녕하세요. ^_^
:
: 오늘도 학교 PC실에서 열심히 질문을 올립니다.
: 음....
: 숙제로 나온 컴퓨터 숙제를 위한 프로그램을 짜고 있죠.
: 문제는 푸리에 급수에 관련된 것입니다.
: 공대 나오신분들은 푸리에 잘 알고 계시죠?
: 그럼 서론은 여기서 줄이고
: PaintBox 컴포넌트가 들어간 프로그램을 만들었습니다.
: 거의 다 완성을 했습니다.
: 그런데 그래프를 PaintBox에 그렸는데 이 PainBox부분이
: 다른윈도우에 가려지면 그 가려진부분은 지워져버립니다.
: 신기한것은 내가만든 다른폼(모달폼)에 가려지면 그림이 지워지지 않는데
: 다른 프로그램(예를 들어 Winamp 등등...)에 가려지면 지워진다는 것입니다.
:
: 그래서 저 나름대로 생각해봤는데 가려진부분만 기억하고 있다가
: 다시그려주는 함수를 쓰면 될것 같습니다.
: 그런데 그 함수가 정확히 뭔지를 모르겠구요.
: 그리고 다른윈도우에 일부가 가려졌다가 다시 나타나게 되면
: OnPaint 이벤트가 발생하지 않는것 같은데 제가 잘못생각하는 건가요??
: 여러분들의 열화와 같은 답변을 기다리고 있겠습니다.
:
:    From : D빌더(현재 C빌더로 업그레이중)



임펠리테리입니다.

TPaintBox는 원래 자체의 이미지를 저장해두고 있는 기능이 없어서, 그림을 그린 후 다른 윈도우에 가려지든지해서 내용이 지워지고 나면, 그냥 두어서는 원래 아무것도 없었던 것처럼 빈 공백만 나타나게 됩니다. 그러므로 페인트박스가 화면에 나타날 때마다 다시 원래의 루틴대로 그려줘야 하는데, 페인트박스가 원래 이런 성질을 갖고 있는 만큼 그에 대처하는 OnPaint 이벤트가 있습니다. 그러므로 페인트박스에 무언가 그리려고 한다면, 처음부터 그리는 루틴을 페인트박스의 OnPaint 이벤트 핸들러에서 작성하셔야 합니다. (페인트박스를 사용하는 정석입니다.)

만약 매번 그리지 않는 방법이 필요하다면 TImage를 사용해야 합니다. TImage는 컨트롤 내부에 Picture 속성을 가지고 있는데, Picture는 다시 TBitmap 형 객체를 가지고 있으므로 일단 Picture에 그려진 그림은 TImage 객체가 파괴될 때까지 계속 저장되므로 가려지고 다시 나타날때에도 지워지지 않습니다.

그럼 참고하시길...

+ -

관련 글 리스트
3139 [질문] PaintBox 의 그림이 다른윈도우에 가려지면 지워져요. D빌더 3580 2000/03/21
3145     Re:[질문] PaintBox 의 그림이 다른윈도우에 가려지면 지워져요. 박지훈.임프 4021 2000/03/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.