Я кодирую на C, GTK+ и cairo. Я пытаюсь использовать ползунок для изменения значения переменной. Это то, что у меня есть до сих пор:
adj = (GtkAdjustment *) gtk_adjustment_new (300.0, -50.0, 500.0, 1.0, 1.0, 1.0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adj));
gtk_box_pack_start (GTK_BOX (vbox1), scale, FALSE, TRUE, 5);
gtk_signal_connect(GTK_OBJECT(adj), "value_changed", GTK_SIGNAL_FUNC(value_changed), NULL);
Здесь я создаю настройку и посылаю сигнал всякий раз, когда пользователь перемещает ползунок.
double
value_changed (GtkAdjustment *adj)
{
pos1x = gtk_adjustment_get_value(adj);
printf ("\n%lf", pos1x);
return pos1x;
}
Здесь я изменяю значение pos1x на значение, которое имеет ползунок.
gboolean
on_expose_event (GtkWidget *widget,
GdkEventExpose *event,
gpointer data)
{
cairo_t *cr;
double posy;
static gdouble pos2x = 450., pos2y = 290.; //Coordenadas Espelho
static gdouble pos3x = 450., pos3y = 250.;
cr = gdk_cairo_create(widget->window);
pos1x = gtk_adjustment_get_value(adj);
posy = 250.;
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_set_line_width (cr, 1.0);
cairo_rectangle (cr, (double) pos1x, (double) posy, 20, 80);
cairo_stroke_preserve (cr);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_fill (cr);
Теперь я хочу использовать переменную pos1x для изменения координат прямоугольника, который я создал с помощью cairo, когда пользователь перемещает ползунок. Однако я могу получить только начальное значение корректировки, а не изменения. Мне трудно придумать, как это сделать, и я был бы признателен, если бы вы могли мне помочь.
Заранее спасибо.