Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование GTK

13K
15 июня 2006 года
sima
27 / / 15.06.2006
Использую GTK+-2.0. Необходимо в окошке показать рисунок. В разных частях этого рисунка должны отображаться изменяющиеся во времени числа. Подскажите как это сделать. Заранее спасибо ответившим.
292
15 июня 2006 года
Matush
726 / / 14.01.2004
Вот держи:

[SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][SIZE=2] gint expose_event(GtkWidget* widget, GdkEventExpose* event)
{
GdkGC *gc;
GdkColormap *palet;
GdkBitmap* mask;
[/SIZE][SIZE=2][COLOR=#008000]
[/COLOR][/SIZE][SIZE=2]gc = gdk_gc_new( widget->window );
[/SIZE]
[SIZE=2][COLOR=#0000ff]static[/COLOR][/SIZE][SIZE=2] GdkPixmap* pixmap = gdk_pixmap_new(NULL, [/SIZE][SIZE=2][COLOR=#800000]640[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#800000]480[/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#800000]24[/COLOR][/SIZE][SIZE=2]);


[SIZE=2]pixmap = gdk_pixmap_create_from_xpm(NULL,
NULL,
NULL, [/SIZE][SIZE=2][COLOR=#000080]"картинка.xpm"[/COLOR][/SIZE][SIZE=2]);
[/SIZE]
gdk_draw_pixmap( widget->window,
widget->style->fg_gc[GTK_WIDGET_STATE( widget )],
pixmap,
event->area.x, event->area.y,
event->area.x, event->area.y,
event->area.width, event->area.height );

GdkFont* font = gdk_font_load( [/SIZE][SIZE=2][COLOR=#000080]"-*-courier new-bold-r-*-*-*-160-*-*-*-*-*-*"[/COLOR][/SIZE][SIZE=2] );
[/SIZE][SIZE=2][COLOR=#0000ff]if[/COLOR][/SIZE][SIZE=2]( font )
{
gdk_draw_string( widget->window, font, gc,
[/SIZE][SIZE=2][COLOR=#800000]50[/COLOR][/SIZE][SIZE=2],
[/SIZE][SIZE=2][COLOR=#800000]50[/COLOR][/SIZE][SIZE=2],
[/SIZE][SIZE=2][COLOR=#000080]"tra-ta-ta"[/COLOR][/SIZE][SIZE=2] );
}

[/SIZE][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2]( FALSE );
}

Это функция отрисовки содержимого виджета, с остальным справишся?
[/SIZE]
13K
16 июня 2006 года
sima
27 / / 15.06.2006
Огромное спасибо Matush. Как я понял, мне надо создать новый виджет (не пинай ногами начинающего)?
292
16 июня 2006 года
Matush
726 / / 14.01.2004
Да я сам пару дней как GTK использую.
Вот держи пример рисования примитивов
Почитай http://forum.codenet.ru/showthread.php?t=15901
13K
27 июня 2006 года
sima
27 / / 15.06.2006
Разобрался более или менее с предложенным кодом. Возник следующий вопрос - для того чтобы менять значения отображаемых чисел я сам должен создавать сигнал вызывающий ф-цию expose_event? Если это так, то как это сделать?
292
03 июля 2006 года
Matush
726 / / 14.01.2004
[quote=sima]Разобрался более или менее с предложенным кодом. Возник следующий вопрос - для того чтобы менять значения отображаемых чисел я сам должен создавать сигнал вызывающий ф-цию expose_event? Если это так, то как это сделать?[/quote]

Можно и так. Незнаю на сколько это правильно.
[SIZE=2]Я не создавал сигнал, а запускал функцию перерисовки, примерно так:
 
Код:
GdkEventExpose expose;
expose.area.width = SCREEN_SIZE_X;
expose.area.height = SCREEN_SIZE_Y;
expose.area.x = expose.area.y = [/SIZE][SIZE=2][COLOR=#800000]0[/COLOR][/SIZE][SIZE=2];
expose_event_func(drawing_area, &expose);

[/SIZE]
13K
04 июля 2006 года
sima
27 / / 15.06.2006
Тоже нашел функцию для перерисовки
void gdk_window_invalidate_rect (GdkWindow *window,
GdkRectangle *rect,
gboolean invalidate_children);
Matush, не сочти за наглость, не могу найти в доке описание функции
expose_event_func(drawing_area, &expose);
можешь дать ссылочку (на доку)?
292
04 июля 2006 года
Matush
726 / / 14.01.2004
[quote=sima]
expose_event_func(drawing_area, &expose);
можешь дать ссылочку (на доку)?[/quote]

могу :)))))))))))))

expose_event_func - это я так назвал для примера, "expose_event_func" - это та функия которую ты вешаешь в качестве обработчика события "expose_event". Ее можно было назвать как угодно, "tra_la_la_expose" например.

 
Код:
[SIZE=2]gtk_signal_connect(GTK_OBJECT(drawing_area), [/SIZE][SIZE=2][COLOR=#000080]"expose_event"[/COLOR][/SIZE][SIZE=2],
(GtkSignalFunc)expose_event_func, NULL);
[/SIZE]
[SIZE=2]
www.gtk.org

[/SIZE]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог