제어 함수인 stddraw.show()
는 설명이 약간 더 필요하다. 프로그램이 stddraw.line()
이나 stddraw.point()
등 그림 함수를 호출하면 stddraw
는 배경 캔버스(background canvas)라고 하는 추상적인 화면에 그린다. 배경 캔버스는 화면에 보이지 않고 단지 컴퓨터 메모리에만 존재한다. 점, 선 등은 배경 캔버스에 그려지며 표준 그래픽스 창에 바로 나타나지 않는다. stddraw.show()
를 호출해야 배경 캔버스에 그린 그림이 표준 그래픽스 창으로 복사되어 화면에 나타나며, 사용자가 그래픽 창 제목 줄의 닫기 버튼을 눌러 표준 그래픽스 창을 닫아야 종료된다.
stddraw
가 배경 캔버스를 사용하는 이유는 무엇일까? 캔버스를 하나가 아니라 두 개를 사용하는 이유는 stddraw
를 효율적으로 만들기 위해서이다. 복잡한 그림의 요소를 하나씩 그리는 작업은 대부분의 컴퓨터에서 참을 수 없을 정도로 비효율적인 작업이기 때문이다. 컴퓨터 그래픽스에서는 이런 방법을 이중 버퍼링(double buffering)이라고 한다.
stddraw
모듈을 사용하는 프로그램은 일반적으로 다음과 같은 구조로 되어 있다.
• stddraw
모듈을 임포트한다.
• stddraw.line()
과 stddraw.point()
등의 그림 그리기 함수를 이용해 배경 캔버스에 그림을 그린다.
• stddraw.show()
를 호출해 배경 캔버스를 표준 그래픽스 창에 보여주고 사용자가 창을 닫을 때까지 기다린다.
모든 그림은 배경 캔버스로 간다는 점을 반드시 기억하라. 일반적으로 그림을 그리는 프로그램은 마지막에 stddraw.show()
를 호출한다. stddraw.show()
를 호출해야 화면에서 그림을 볼 수 있기 때문이다.