Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GTK调整变量_C_Gtk_Cairo_Gtk2 - Fatal编程技术网

C GTK调整变量

C GTK调整变量,c,gtk,cairo,gtk2,C,Gtk,Cairo,Gtk2,我用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_co

我用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创建的矩形的坐标。然而,我只能得到调整的初始值,而不能得到变化。我很难想出一个办法来做这件事,如果你能帮我一把,我将不胜感激


提前感谢。

您需要调用
gdk\u window\u invalidate\u rect()
或类似的
value\u changed()
函数,让GTK+重新发出
暴露事件