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


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


LIST ALL
Posted by 지상현2011-06-13 08:41:41, Hit : 5067
[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
1932 창조
         [re] [질문] 안되는데요^^ [2]
위자드 2004/03/06  3737
1931 창조
     [re] [질문] 어디 방송에서 방영된줄아세요
김훈 2004/08/31  2760
1930 창조
     [re] [질문] 혁수님보세요. 그림첨부합니다. [1]
변혁수 2004/08/26  3150
1929 창조
     [re] [질문]그림인쇄는 불가능한가요? [1]
nylon 2002/11/20  4408
1928 창조
     [re] [질문]만일명령어가이상해욤 [1]
김환욱 2002/12/24  3586
1927 창조
     [re] [질문]문자를 자동으로 나타낼때.. [1]
nylon 2002/11/04  3970
1926 창조
     [re] [질문]창이 생성될때...
nylon 2002/10/08  4486
1925 창조
     [re] [필독] 창조 0.76에서 루나지원 방법 없나요?
nylon 2002/10/24  4125
1924 창조
       [re] [필독] 창조 0.76에서 루나지원 방법 없나요?
정윤부 2002/10/24  3579
1923 창조
     [re] '메모'에 관련 된 질문입니다. [1]
nylon 2003/02/03  3677
1922 창조
     [re] ㅎ글꼴창, ㅎ색상창 [1]
nylon 2004/03/28  4024
1921 창조
     [re] 간단하게 다시 만들었습니다. [3]
위자드 2004/11/23  3415
1920 창조
     [re] 간단하게 할수 있게 할려면은? [3]
권선중 2005/04/02  3582
1919 창조
     [re] 간단하게, [2]
nylon 2004/02/24  4372
1918 창조
     [re] 간단한 질문 날라가요~! [2]
민렬만세 2002/09/21  4058
1917 창조
     [re] 감사한데요... 사용법을 잘 모르겠거든요.. ...
에일리언 2002/12/15  3423
1916 창조
     [re] 감사합니다. 잘사용하겠습니다
창조사랑 2002/11/05  3540
1915 창조
     [re] 값을 얻어내려면??? [4]
권선중 2004/08/01  3512
1914 창조
     [re] 값을 얻어내려면??? [1]
지상현 2004/08/01  4265
1913 창조
     [re] 강정훈 님, 답변해주신데로 해봣는데요! [20]
강정훈 2007/09/15  4137
1912 기타
       [re] 걍 직접 창조로 소스를.. [2]
최재일[20JI] 2004/05/22  4389
1911 창조
     [re] 게임제작 질문좀 드릴게요 [1]
성인e 2009/06/28  3546
1910 창조
     [re] 궁금한 점입니다. 0.9b! [2]
카멜 2002/12/13  3736
창조
     [re] 그림판 깜빡임 문제 질문드립니다 [3]
지상현 2011/06/13  5067
1908 창조
     [re] 기능을 분리하라는 조언을 따라서 노력을 해... [1]
박무진 2012/01/28  3406
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이희철
로그인