글
본격 Gtk에서 Cairo 사용하기
프로그래밍/Gtk+/binding gtk
2011. 11. 15. 23:11
예제 소스 참조한곳 주소 => http://zetcode.com/tutorials/cairographicstutorial/basicdrawing/
결과창

선긋는 예제인듯.
난 저중에서 소스를 일부를 뽑아내서
라는 함수를 만들었다.
mx, my가 시작위치 lx, ly 가 끝위치로해서 선을 긋는 함수다. 물론 cairo_t 타입으로 cr이라는 변수가 선언되어있어야한다.
마우스가 눌리면 전역변수 x,y값에 마우스가 누른 좌표값을 넣고, 마우스가 떼어지면 함수를 이용해 drawline함수를 사용해서 선을 그어보고싶었지만 마우스를 누르고떼는 이벤트와 그 값이 넘어가는 방식을 몰라서 막혔다. 국내에 Gtk, Cairo로 무언가 만들어본사람의 조언이있으면 좋을텐데... 예제파일이랑 영문문서를 찾아야하는건가... @.@...
#include <cairo.h> #include <gtk/gtk.h> static gboolean on_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data) { cairo_t *cr; cr = gdk_cairo_create (widget->window); cairo_set_source_rgba(cr, 0, 0, 0, 1); static const double dashed1[] = {4.0, 1.0}; static int len1 = sizeof(dashed1) / sizeof(dashed1[0]); static const double dashed2[] = {4.0, 1.0, 4.0}; static int len2 = sizeof(dashed2) / sizeof(dashed2[0]); static const double dashed3[] = {1.0}; cairo_set_line_width(cr, 1.5); cairo_set_dash(cr, dashed1, len1, 0); cairo_move_to(cr, 40, 30); cairo_line_to(cr, 200, 30); cairo_stroke(cr); cairo_set_dash(cr, dashed2, len2, 1); cairo_move_to(cr, 40, 50); cairo_line_to(cr, 200, 50); cairo_stroke(cr); cairo_set_dash(cr, dashed3, 1, 0); cairo_move_to(cr, 40, 70); cairo_line_to(cr, 200, 70); cairo_stroke(cr); cairo_destroy(cr); return FALSE; } int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *darea; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); darea = gtk_drawing_area_new(); gtk_container_add(GTK_CONTAINER(window), darea); g_signal_connect(darea, "expose-event", G_CALLBACK (on_expose_event), NULL); g_signal_connect(window, "destroy", G_CALLBACK (gtk_main_quit), NULL); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(window), 250, 100); gtk_widget_show_all(window); gtk_main(); return 0; }
결과창

선긋는 예제인듯.
난 저중에서 소스를 일부를 뽑아내서
void drawline(mx, my, lx, ly)
{
cairo_set_source_rgba(cr, 0, 0, 0, 1); // color setting
cairo_set_line_width(cr, 1); // line width setting
cairo_move_to(cr, mx, my); // start point
cairo_line_to(cr, lx, ly); // end point
cairo_stroke(cr); // draw?
}
라는 함수를 만들었다.
mx, my가 시작위치 lx, ly 가 끝위치로해서 선을 긋는 함수다. 물론 cairo_t 타입으로 cr이라는 변수가 선언되어있어야한다.
마우스가 눌리면 전역변수 x,y값에 마우스가 누른 좌표값을 넣고, 마우스가 떼어지면 함수를 이용해 drawline함수를 사용해서 선을 그어보고싶었지만 마우스를 누르고떼는 이벤트와 그 값이 넘어가는 방식을 몰라서 막혔다. 국내에 Gtk, Cairo로 무언가 만들어본사람의 조언이있으면 좋을텐데... 예제파일이랑 영문문서를 찾아야하는건가... @.@...
'프로그래밍 > Gtk+/binding gtk' 카테고리의 다른 글
gtkmm 예제 프로그램 (0) | 2011.11.03 |
---|---|
gtkmm! Anjuta! (0) | 2011.11.02 |
gtkbuilder의 사용 (0) | 2011.06.09 |