Gtk 이미지 삽입에 관련된 질문 입니다.

조현구의 이미지

GTK에서 마우스를 클릭햇을 경우..

콜백함수를 호출하여 해당하는 좌표에 이미지를 그려주고 싶습니다.

콜백함수 호출하는대 top_widget을 넣어서 호출하였구요.

좌표값은 받아왔는대..

그 위치에 이미지를 그려주는 부분에서 지금 계속 삽질중입니다.

도와주세요..ㅠ.ㅠ

dalgarak의 이미지

이렇게 질문하시면 제대로된 답변을 받기가 힘듭니다. 질문을 이해하기가 힘들군요.

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;
}

마우스 오른쪽 버튼을 클릭하면 말들에 이미지를 가져와서 뿌려줄려고 합니다.

현재 이부분에서 막혀서 도저히 진도가 안나갑니다.

좀 도와주세요..ㅠ.ㅠ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.