그래픽 & 멀티미디어
글 수 15
gx_png_create() 함수 추가
파일없이 넓이와 높이를 지정하여 PNG 이미지 객체를 생성하는 함수, gx_png_create()를 추가했습니다. 파일없이 이미지 객체를 만드는 함수로는 Bitmap 파일을 만드는 gx_bmp_create()가 있습니다만 생성되는 객체가 Bitmap이어서 투명 처리를 할 수 없는 단점이 있습니다. 그러므로 이번 0.6.6에서는 프로그램에서 gx_png_create()을 사용하면, 파일없이 필요할 때 마다 PNG 객체를 생성하여 사용할 수 있습니다.
예제에서는,
- 화면에 background.png를 출력하고,
- 파일없이 PNG객체를 생성한 후, PNG 객체의 바탕을 투명하게 한 후, “V”자를 그립니다.
즉, gx_png_create()를 이용하여, 배경이 투명한 “V”자 PNG 이미지를 만듭니다. - background.png를 출력한 화면에, 배경이 투명한 “V”자 PNG 이미지를 출력합니다.
예제를 실행하면 아래의 그림에서 처럼 background.png 위에 “V”자가 출력됩니다.
예제
#include <stdio.h> #include <gx.h> #include <gxpng.h> int main( void) { dc_t *dc_screen; // 화면 Device Context png_t *png_back; png_t *png_dest; if ( gx_init( "/dev/fb")) // gxLib 초기화 gx_print_error( ""); // 실행 중 에러 내용을 출력 else { if ( !( dc_screen = gx_get_screen_dc())) // 화면 출력을 위한 스크린 DC 구함 gx_print_error( ""); // 실행 중 에러 내용을 출력 else { gx_clear( dc_screen, gx_color( 0, 0, 0, 255)); if ( !( png_back = gx_png_open( "background.png"))) gx_print_error( "background.png"); else { // 배경 이미지를 출력 gx_bitblt( dc_screen, 0, 0, (dc_t *)png_back, 0, 0, png_back->width, png_back->height); // 파일없이 PNG 이미지를 생성 if ( !( png_dest = gx_png_create( 200, 100))) gx_print_error( "png_create"); { png_dest->clear( png_dest, gx_color( 0, 0, 0, 0)); // 생성한 이미지를 빈 공간(?)으로 png_dest->pen_color = gx_color( 255, 0, 0, 255); // 펜 색상을 빨강으로 gx_line( (dc_t *)png_dest, 0, 0, 100, 100); // 빨강색의 V 자를 그린다. gx_line_to((dc_t *)png_dest, 200, 0); // 즉, 투명한 배경 위체 빨강 V자를 그림 gx_bitblt( dc_screen, 0, 0, (dc_t *)png_dest, 0, 0, png_dest->width, png_dest->height); gx_png_close( png_dest); } gx_png_close( png_back); } gx_release_dc( dc_screen); } gx_close(); } return 0; }