0
카이로 도면을 새로 고치는 데 문제가 있습니다. 그것은 작동하지 않으며 이유를 모른다. 당신이 나를 도울 수? 분석 기능이 실행될 때마다 새로운 "드로잉"을 만들고 싶습니다. 그런 다음gtk2에서 카이로 그리기를 새로 고치는 방법은 무엇입니까?
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(formula_scrolled_window), d_area);
:
d_area = gtk_drawing_area_new();
그런 다음 내가 스크롤 창에 포장 :
g_signal_connect(G_OBJECT(d_area), "expose_event", G_CALLBACK(expose_event_callback), NULL);
하지만 전에 내가 가지고 :
나는 이런 식으로 뭔가를 만들어
g_signal_connect(G_OBJECT(search_entry), "activate", G_CALLBACK(analyse), &window_and_search_entry);
기능 분석 :
ELEMENT *analyse(GtkWidget *widget, WINDOW_AND_SEARCH_ENTRY *data)
{
const gchar *text = gtk_entry_get_text(GTK_ENTRY(data->search_entry));
main_window = data->window;
d_area = GTK_DRAWING_AREA(data->d_area); //do I nedd it?
foo = operate(text, GTK_WIDGET(data->window));
print_on_console_with_new_line(foo);
g_signal_connect(G_OBJECT(d_area), "expose_event", G_CALLBACK(expose_event_callback), NULL); //do I need it??
do_drawing(cr, foo); //is it good
g_signal_connect(G_OBJECT(d_area), "expose_event", G_CALLBACK(expose_event_callback), NULL); //do I need it??
}
그리고 마지막으로
gboolean expose_event_callback (GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
cr = gdk_cairo_create (gtk_widget_get_window (widget));
do_drawing(cr, foo);
return FALSE;
}
:
void do_drawing(cairo_t *cr, ELEMENT *p)
{
gdouble font_size = 20.0;
cairo_set_source_rgb(cr, 0, 0, 0);
cairo_select_font_face(cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(cr, font_size);
cairo_move_to(cr, lala, 30.0);
cairo_show_text(cr, "6");
lala += 30;
}
작동하지 않는다는 의미는 무엇입니까? 이전 이미지 위에 그리는거야? –
새 이미지를 그리지 않습니다. 나는 여전히 똑같은 것을보고있다. 카이로 이미지를 업데이트하는 기능을 원합니다. – jjpikoov
이 두 가지 솔루션이 작동합니다. 고마워. – jjpikoov