창조유저그룹-커즈닷컴
Window close
ID :     PASS :   
   
  처음으로
  창조
  창조 소개
창조 다운로드
CUGz.com 소개
온라인 도움말
  커뮤니티
  가입인사
자유게시판
Q/A게시판
TIP/TECH
열린강좌
자주하는질문
아이디어게시판
  자료실
  소스자료실
프로그램자료실
기타자료실
명예의 전당
이미지 자료실
  지원/기타
  표준용어재정
구글 웹서치  
관리자 전용


질문게시판
- 반드시 검색을 하신 후 원하는 답변을 찾을 수 없을 때, 질문을 올려주세요.


LIST ALL
Posted by 지상현2011-06-13 08:41:41, Hit : 5050
[re] 그림판 깜빡임 문제 질문드립니다
Homepage : http://ssidang.x-y.net
Post URL : http://cugz.sjworks.net/bbs/zboard.php?id=qna&no=2467
>창조로 그림판(그림 그리는 프로그램)을 만들면 마우스를 움직일 때 깜빡거리네요...
혹시 해결할 방법 없을까요?

그림판을 어떻게 구현하셨는지 모르겠지만, 십중팔구 마우스를 끌어서 선을 그릴 때 이전에 있던 선을 지우고, 새로운 선을 그리는 방식으로 만드셨을 겁니다.
그러나 이렇게 '지우고' 새로 그리는 방법은, 지우는 순간이 화면에 보여버리는 수가 있기 때문에 깜빡이는 것처럼 보이는 것입니다.

모니터 같은 표시 장치는 화면에 표시되는 타이밍이 있기 때문에, 그리는 속도와는 상관 없이 발생합니다. 프로그램이 초당 천 번 그릴 수 있는 능력이 있더라도, 모니터가 (일반적으로) 초당 60번 밖에 표시하지 못하기 때문에 재수 없게 지우는 순간이 걸리면 지워진 그림이 1/60초동안 보인다는 이야기입니다.

근본적인 원인은, 화면을 지우는 과정, 선을 그리는 과정 등 '과정'을 사용자에게 보여주기 때문입니다.
결과를 얻기 위한 과정도 중요하지만, 그림을 그릴 때만은 과정은 무시하고 결과만 보여주는 것도 한 방법이 될 수 있습니다.

이 문제를 해결하려면, '지움'과 동시에 '그리기'를 해줘야 하지만, 그렇게 할 수 있는 명령어가 없으며, 직접 구현하려면 점(픽셀)을 하나 하나 건드려주는 식으로 가야 합니다.
가장 깔끔한 해결책은 '과정'을 안 보이는 곳에서 다 해결한 다음 '결과'만 보여주는 것입니다.

그려줄 곳과 똑같은 크기로 안 보이는 그림판 따위를 만드시고, 그리고자 하는 그림판과 똑같이 만들어주고, 우선 여기에 모든 것을 그립니다.
그리고 마지막에 여기에 그려준 것을 바로 보이는 그림판에 옮겨주면 됩니다.
이렇게 하면 원래 있던 그림에 새 그림을 덮어 쓰기 때문에 '지우는 과정'이 생략되므로 깜빡임이 발생하지 않습니다. 이러한 기법을 이중 버퍼링(Double Buffering)이라 합니다.

대신 이 방법을 쓰면 찢어짐(Tearing)이란 현상이 발생할 수도 있는데, 보이는 그림판으로 그림을 옮기는 과정에서 절반 밖에 못 옮겼을 때 화면에 표시되면, 남아있던 원래 그림과 새로 덮어 그리는 원래 화면에 절반씩 섞여있는 모양으로 보일 것입니다. 그렇지만 대부분의 경우 화면을 확 지우는 등 극적으로 바뀌는게 아니라 기존 그림에서 조금 더 바뀐 형태인 경우가 대부분이기 때문에, 그림이 전체적으로 약간 비틀린듯한 느낌을 주게 됩니다. 그래서 이 현상을 Tearing이라 합니다.

그렇지만 Tearing은 크게 눈에 띄지도 않고 게임처럼 화면이 실시간으로 바뀌지 않는 이상 크게 문제될 것이 없습니다.

일부러 길게 썼는데, 결론은 화면에 보이는 그림판에 작업하지 마시고, 안 보이는 그림판에 작업하신 다음 보이는 그림판에 한 번에 옮기시면 되며, 이러한 기법을 Double Buffering이라 한다는 것입니다.

참고가 되셨길 바랍니다.

paintj   2011-06-13 PM 5:38:47  
정확히 어떻게 해결해야 하는지 감이 안오네요ㅠㅠ

기존 프로그램을 버전업하면서 아예 새로 만들고 있는데, 이상하게 같은 명령어를 사용함에도 불구하고 기존의 프로그램은 깜박임이 없고, 새로 만들고 있는 프로그램에는 깜박임이 발생합니다.

기존 프로그램에는

그림판 마우스버튼을 누를때

그림판0.배경.펜이동(X, Y);
눌림:=참;

마우스버튼을 뗄때

그림판0.배경.선그려(X, Y);
눌림:=거짓;

마우스를 움직일때

만일(눌림) {
그림판0.배경.선그려(X, Y);
}

그리고 초기화 명령어로

진리:눌림;

으로 그림 그리는 기능을 구현하고 있습니다.

기존 프로그램에서는 깜박임이 전혀 없는데, 새로 만드니까 이상하게 깜박임이 발생하네요...
paintj   2011-06-13 PM 5:43:01  
그리고 말씀해주신 더블 버퍼링을 시도해보려고 기존 그림판과 같은위치 아래에 같은 그림판을 복사 붙여넣기 해서 깔아버리고 명령어를

마우스버튼을 누를때

그림판1.배경.펜이동(X, Y);
그림판0.그림.할당해(그림판1.그림);
눌림:=참;

마우스버튼을 뗄때

그림판1.배경.선그려(X, Y);
그림판0.그림.할당해(그림판1.그림);
눌림:=거짓;

마우스를 움직일때

만일(눌림) {
그림판1.배경.선그려(X, Y);
그림판0.그림.할당해(그림판1.그림);
}

으로 해봤는데 아예 그려지지를 않네요^^;

펜 색상이라던가 폭은 당연히 설정해 둔 상태입니다...
지상현   2011-06-13 PM 9:55:00  
http://cugz.sjworks.net/bbs/zboard.php?id=pds_sc&no=824
예제를 따로 만들려 했는데, 여유가 없어서 기존 코드로 대신합니다.
위 코드는 드래그 해서 원을 그리는 부분이 있는데, 아마 원하시는게 이런게 아닐까 합니다. 참고하세요.
LIST ALL               GO TO THE TOP


N
Category
   Subject
Posted by
Date
H
1931 창조
   툴바0 << 질문 [5]
째잭!!~ 2004/03/16  3265
1930 기타
   [잡담;;] 컴퓨터 리소스 마니묵는 플그램 ?;; [6]
째잭!!~ 2004/03/10  3362
1929 창조
   예전에... 자료실에..^^;; [10]
째잭!!~ 2004/03/04  3618
1928 창조
   난수(99) 질문하고 다른거. [4]
째잭!!~ 2004/02/19  3145
1927 창조
   저기 질문이여.. [4]
째잭!!~ 2004/02/15  3234
1926 창조
   창조 09b 다운로드시 로딩 뜨게하려면 어떻게... [7]
째잭!!~ 2004/02/12  3335
1925 창조
   동영상 프래임 이동 질문..^^;; [4]
째잭!!~ 2004/02/08  3238
1924 창조
   흠 질문 할께여 ㅠㅠ [2]
째잭!!~ 2003/10/28  3509
1923 창조
   저기 죄송여 ㅠㅠ [1]
째잭!!~ 2003/10/26  3558
1922 창조
   질문입다..^^;; [1]
째잭!!~ 2003/10/26  3251
1921 창조
   [초짜] Autorun.inf 랑 그외 질문 --; [5]
째잭!!~ 2003/10/25  3264
1920 창조
   저기 ㅠㅠ 질문입다!~ [1]
째잭!!~ 2003/08/20  4003
1919 창조
   이거 안받아지는데효? [3]
째잭!!~ 2003/08/04  3430
1918 창조
   경로에 관한 질문 드립니다 [4]
짱아 2009/07/07  3651
1917 기타
   왜 모든 게시판들이 2페이지로 넘기면 안넘어... [4]
짱아 2007/11/17  3201
1916 창조
   클립보드의 내용을 지우는 명령어는 없나요? [1]
짱아 2005/04/25  3299
1915 창조
   키보드의 콘트롤키나 알트키가 누르고 있을때... [3]
짱아 2005/05/10  3264
1914 창조
   질문이요, [5]
진도 2006/01/20  2586
1913 창조
   창조에.. 웹페이지는 어떻게 넣나요?? [2]
지수 2006/07/05  4234
1912 창조
         [re] 질의 명령 실행후 테이블이 내용이 변경이 ... [1]
지상현 2011/07/15  3728
창조
     [re] 그림판 깜빡임 문제 질문드립니다 [3]
지상현 2011/06/13  5050
1910 창조
       [re] 추가 질문 대포 비거리 공식입니다.
지상현 2006/07/30  3570
1909 창조
     [re] 한글 키값 알아오고 싶은데..창만 이용해서.. [11]
지상현 2006/07/27  3889
1908 창조
   화판에 배경에 대해서! [1]
지상현 2005/11/21  3494
1907 창조
     [re] 쓸데 없는 답변.
지상현 2005/10/12  4320
LIST ALL   Prev [1][2][3][4][5][6][7][8][9] 10 ..[87] Next
Copyright 1999-2024 Zeroboard / skin by reedyfox in miniwini style
로그인
지우개 Expert 3.0
제작자 : 천호성 님 [LINK]
로그인
대박로또2005
제작자 : 최재일 님 [LINK]
로그인
1박종훈15292 점
2지상현8809 점
3손상진7388 점
4권선중6060 점
5이진백5174 점
로그인
가입일닉네임
05/31김동률
03/31홍형기
09/01o00pp99oo
12/27이재민
11/20이희철
로그인