GTK에서 마우스를 클릭햇을 경우..
콜백함수를 호출하여 해당하는 좌표에 이미지를 그려주고 싶습니다.
콜백함수 호출하는대 top_widget을 넣어서 호출하였구요.
좌표값은 받아왔는대..
그 위치에 이미지를 그려주는 부분에서 지금 계속 삽질중입니다.
도와주세요..ㅠ.ㅠ
이렇게 질문하시면 제대로된 답변을 받기가 힘듭니다. 질문을 이해하기가 힘들군요.
GtkDrawingArea 위젯을 쓰신다면.. 말 그대로 그냥 받아오신 좌표에다가 그리시면 됩니다-_-;
뭐-_-; 질문하신게 그리는 방법을 모르겠다고 하신것이면..http://developer.gnome.org/doc/API/2.0/gdk/gdk-Drawing-Primitives.html 페이지를 보세요.
만약 파일로부터 pixbuf를 읽어오는 방법에 대해 궁금하신거면http://developer.gnome.org/doc/API/2.0/gdk-pixbuf/index.html 를 보세요.
gtk-demo 를 실행, Drawing Area 부분을 보세요. 도움이 많이 되실껍니다.
덧, Layout / Fixed 같은걸 쓰신거면 GtkImage 로 위젯을 만들어서 넣어주고 좌표만 잡아주면 끝이겠지요... ---- :LOL:
http://lunapapa.egloos.com
include #include #include
#define X_AXIS 240 #define Y_AXIS 280 #define X_PAD 1 #define Y_PAD 7
/*콜백 함수를 등록한다. */ gint button_press_event(GtkWidget *frame, GdkEventButton *event) { GtkWidget *black;
if(event->button == 1) { gint x = event->x - X_PAD; gint y = event->y - Y_PAD; g_print("%d, %d\n",x, y); black = gtk_image_new_from_file("./back.bmp"); gtk_container_add(GTK_CONTAINER(frame), black); gtk_widget_show(black); } return TRUE; } gboolean expose_event(GtkWidget *widget, GdkEventExpose *event) { return FALSE; } void print_and_quit(GtkButton *was_clicked, gpointer user_data) { .. }
gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, gpointer user_data) { ..... }
int main(int argc, char *argv[]) { GtkWidget *top_widget; GtkWidget *main_box; /*이미지와 버튼이 들어갈 매인 박스를 선언해준다.*/ GtkWidget *button_box; /*버튼들이 삽입될 box를 선언해 준다. */ GtkWidget *Bakground; /* 배경 이미지를 생성한다.*/ .... gtk_init(&argc, &argv); /* window_widget 생성 */ top_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/*창 크기 조절 보드 스크린 크기에 맞추어서 */ ....
.... /*윈도우 속성 설정 이름은 Network omok game 이다." */ gtk_window_set_title(GTK_WINDOW(top_widget), "Omok games");
/* 백그라운드에 오목판 이미지를 삽입한다. */ Bakground = gtk_image_new_from_file("./pan.bmp");
/*인스턴스 계층을 정의 한다. */ ..
/* 박스와 버튼 을 설정한다.*/ .... /* 메인 박스에 버튼 박스를 등록한다. */ ... /* 콜백을 등록한다. */ ...
/*위도우 종료 콜백을 등록한다. */ .... /*마우스의 좌표 값을 얻어 온다. */ gtk_signal_connect(GTK_OBJECT(top_widget), "button-press-event", GTK_SIGNAL_FUNC(button_press_event), NULL);
gtk_widget_set_events(top_widget, GDK_BUTTON_PRESS_MASK | GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK ); /* 버튼 박스에 박스들을 등록한다. */ ..... /*화면에 보여준다.*/ gtk_widget_show_all(top_widget);
gtk_main(); g_print("Bye! \n"); return 0; }
마우스 오른쪽 버튼을 클릭하면 말들에 이미지를 가져와서 뿌려줄려고 합니다.
현재 이부분에서 막혀서 도저히 진도가 안나갑니다.
좀 도와주세요..ㅠ.ㅠ
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
이렇게 질문하시면
이렇게 질문하시면 제대로된 답변을 받기가 힘듭니다. 질문을 이해하기가 힘들군요.
GtkDrawingArea 위젯을 쓰신다면.. 말 그대로 그냥 받아오신 좌표에다가 그리시면 됩니다-_-;
뭐-_-; 질문하신게 그리는 방법을 모르겠다고 하신것이면..
http://developer.gnome.org/doc/API/2.0/gdk/gdk-Drawing-Primitives.html
페이지를 보세요.
만약 파일로부터 pixbuf를 읽어오는 방법에 대해 궁금하신거면
http://developer.gnome.org/doc/API/2.0/gdk-pixbuf/index.html
를 보세요.
gtk-demo 를 실행, Drawing Area 부분을 보세요. 도움이 많이 되실껍니다.
덧, Layout / Fixed 같은걸 쓰신거면 GtkImage 로 위젯을 만들어서 넣어주고 좌표만 잡아주면 끝이겠지요...
----
:LOL:
http://lunapapa.egloos.com
include #include #include
include
#include
#include
#define X_AXIS 240
#define Y_AXIS 280
#define X_PAD 1
#define Y_PAD 7
/*콜백 함수를 등록한다. */
gint button_press_event(GtkWidget *frame, GdkEventButton *event)
{
GtkWidget *black;
if(event->button == 1)
{
gint x = event->x - X_PAD;
gint y = event->y - Y_PAD;
g_print("%d, %d\n",x, y);
black = gtk_image_new_from_file("./back.bmp");
gtk_container_add(GTK_CONTAINER(frame), black);
gtk_widget_show(black);
}
return TRUE;
}
gboolean expose_event(GtkWidget *widget, GdkEventExpose *event)
{
return FALSE;
}
void print_and_quit(GtkButton *was_clicked, gpointer user_data)
{
..
}
gboolean delete_event_handler(GtkWidget *widget, GdkEvent *event, gpointer user_data)
{
.....
}
int main(int argc, char *argv[])
{
GtkWidget *top_widget;
GtkWidget *main_box; /*이미지와 버튼이 들어갈 매인 박스를 선언해준다.*/
GtkWidget *button_box; /*버튼들이 삽입될 box를 선언해 준다. */
GtkWidget *Bakground; /* 배경 이미지를 생성한다.*/
....
gtk_init(&argc, &argv);
/* window_widget 생성 */
top_widget = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/*창 크기 조절 보드 스크린 크기에 맞추어서 */
....
....
/*윈도우 속성 설정 이름은 Network omok game 이다." */
gtk_window_set_title(GTK_WINDOW(top_widget), "Omok games");
/* 백그라운드에 오목판 이미지를 삽입한다. */
Bakground = gtk_image_new_from_file("./pan.bmp");
/*인스턴스 계층을 정의 한다. */
..
/* 박스와 버튼 을 설정한다.*/
....
/* 메인 박스에 버튼 박스를 등록한다. */
...
/* 콜백을 등록한다. */
...
/*위도우 종료 콜백을 등록한다. */
....
/*마우스의 좌표 값을 얻어 온다. */
gtk_signal_connect(GTK_OBJECT(top_widget), "button-press-event", GTK_SIGNAL_FUNC(button_press_event), NULL);
gtk_widget_set_events(top_widget, GDK_BUTTON_PRESS_MASK | GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK );
/* 버튼 박스에 박스들을 등록한다. */
.....
/*화면에 보여준다.*/
gtk_widget_show_all(top_widget);
gtk_main();
g_print("Bye! \n");
return 0;
}
마우스 오른쪽 버튼을 클릭하면 말들에 이미지를 가져와서 뿌려줄려고 합니다.
현재 이부분에서 막혀서 도저히 진도가 안나갑니다.
좀 도와주세요..ㅠ.ㅠ
댓글 달기