그래픽 & 멀티미디어
글 수 111
2007.05.10 22:09:43 (*.105.125.81)
30943
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() 호출
}
실행하게 되면 아래와 같이 사각형이 계속 그려집니다.
태그: *그래픽 *라이브러리 *그래픽라이브러리


