김상구.패패루 님이 쓰신 글 :
: 질문의 내용이 좀 불분명하군요.
: 네모난 창이라는게.. 단순히 선으로 네모를 그리는건지, 안에 칼라를 체워야 하는건지,
: 네모를 그려도 점선으로 그리는건지..
: 질문이 모호합니다.
:
: CAD쪽에서 그리는 방식은 윈도우의 GDI와는 확연히 다릅니다.
: CAD쪽에서는 주로 OpenGL을 사용하는데(대표적인 것이 CATIA죠) 이런 경우, 화면에 그려지는 모든 자료는 내부적으로 각 프리미티브에 대한 정보를 모두 가지고 있습니다. 따라서 마우스를 이용해 네모를 그릴 때는 더블버퍼(트리플버퍼를 쓰기도 합니다)를 잡고, 백단에서 모든 프리미티브를 렌더링하고, 마우스의 좌표에 따라 사각형을 그려줍니다.
: 순간적으로 버퍼를 스위치하는 작업이 반복되면서 자연스런 영상을 만들어 내죠.
: 그래픽카드의 성능이 빵빵하다는 전제를 달기 때문에 1600x1200의 화면을 모두다 새로 그리면서 더블버퍼링을 해도 상관이 없습니다. 무시무시한 성능의 그래픽카드가 있으니까요.
: 제가 대학원에 있을때 쓰던 워크스테이션의 그래픽 카드 가격이 3000만원이었습니다. ^^
:
: 그러나 윈도우의 GDI에서는 그런 성능을 낼 수 없기 때문에 다른 방식을 씁니다.
: 가장 단순한 것은 사각형을 선으로만 그리는데, 특정 칼라로 무조건 그리는 것이 아니라 화면의 비트맵에 대해 XOR연산으로 그림을 그립니다. 이걸 지우려면 동일한 위치에 다시 XOR연산으로 그리면 원래 화면이 복원되죠. 따라서 전체 그림을 다시 그리지 않고 빠른 속도로 이를 처리해 줄 수 있는겁니다. 점선으로 그리는 것도 마찬가지고, 이에 대한 API함수도 있습니다.
: 그러나 특정칼라로 선을 그리고, 내부를 색을 칠한다든지 하는 작업은 보다 복잡한 방식이 요구됩니다.
: 편법으로는 Win2000등에서는 Layered Window를 이용해서 알파값을 적절히 주면서 처리하는 방식이 있고.. 더블버퍼를 잡아서 마우스 드래그 영역에 대해서만 다시 그려주는 방식도 있고..
:
: 님이 질문하신 내용이 구체적이지 않아 이렇게 구체적이지 않은 답변밖에 드릴 수가 없습니다.
:
:
: 윤상영 님이 쓰신 글 :
: :
: :
: :
: :
: :
: :
: : 안녕하세요..
: : 궁금한 점이 있어서 이렇게 글을 올립니다..
: :
: : CAD 프로그램과 같이 마우스로 DRAG하면 네모난 창이 만들어지고..
: : 다른데 다시 드래고 하면 이전것은 사라지고 다시 만들어지잖아요..
: :
: : 이렇게 구현할 수 있나요??
: :
: : 일반적인것이라 쉽게 될것도 같은데..
: : 방법을 잘 모르겠네요/..
: :
: :
: : 도움 부탁드립니다..
: :
: :
: :
|