그래픽 & 멀티미디어
글 수 111
2007.05.10 22:09:43 (*.105.125.81)
28384
gx 라이브러리에 사각형을 그리는 gx_rectangle()를 추가했습니다.
gx_rectangle()
| |||||||||
|
gx_rectangle()는 dc의 pen_color로 테두리를 그리고 brush_color로 내부 색을 채웁니다. 또한 pen_color 나 brush_color 가 clr_clear 일 경우 칠해지지 않습니다.
gx_rectangle()함수는 내부에 사각형 테두리를 구려주는 gx_border()와 내부가 채워진 사각형을 그리는 gx_box()을 호출해 줍니다.
void gx_rectangle( dc_t *dc, int x1, int y1, int x2, int y2) { gx_box ( dc, x1, y1, x2, y2); gx_border( dc, x1, y1, x2, y2); }
gx_box()나 gx_border() 모두 사용할 색상이 clr_clear 이면 그리기를 취소합니다.
void gx_box( dc_t *dc, int x1, int y1, int x2, int y2) { if (clr_clear == dc->brush_color) return;
sample 소스
화면에 난수로 구한 사각형을 계속 그립니다. 너무 빠르게 그려지기 때문에 usleep()함수를 사용했습니다. sleep()함수는 인수값이 초 단위라면 usleep()은 1 마이크로초로 100만분의 1초입니다.
void test_rectangle( dc_t *dc) { int x1, y1, x2, y2; int ndx; dc->brush_color = clr_clear; // brush 가 clr_clear 이므로 빈 사각형 그림 for ( ndx= 0; ndx < 30; ndx++) { x1 = rand() % dc->width; // 난수로 좌표와 칼라 값을 구함 y1 = rand() % dc->height; x2 = rand() % dc->width; y2 = rand() % dc->height; dc->pen_color = gx_color( dc, rand() %128 +128, rand() %128 +128, rand() %128 +128); gx_rectangle( dc, x1, y1, x2, y2); usleep( 150 *1000); // 150 msec } for ( ndx= 0; ndx < 30; ndx++) { x1 = rand() % dc->width; y1 = rand() % dc->height; x2 = rand() % dc->width; y2 = rand() % dc->height; dc->pen_color = gx_color( dc, rand() %128 +128, rand() %128 +128, rand() %128 +128); dc->brush_color= gx_color( dc, rand() %128 +128, rand() %128 +128, rand() %128 +128); gx_rectangle( dc, x1, y1, x2, y2); usleep( 150 *1000); // 150 msec } } void test( void) { Device Context 를 생성하고 성공하면 test_rectangle() 호출 } int main( void) { gx를 초기화하고 성공하면 test() 호출 }
실행하게 되면 아래와 같이 사각형이 계속 그려집니다.
태그: *그래픽 *라이브러리 *그래픽라이브러리