gpt4 book ai didi

c - GTK 调整变量

转载 作者:行者123 更新时间:2023-11-30 15:40:21 24 4
gpt4 key购买 nike

我正在使用 C、GTK+ 和 cairo 进行编码。我正在尝试使用 slider 来更改变量的值。这是我到目前为止所拥有的:

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

这是我创建调整并在用户移动 slider 时发送信号的地方。

double 
value_changed (GtkAdjustment *adj)
{
pos1x = gtk_adjustment_get_value(adj);
printf ("\n%lf", pos1x);
return pos1x;
}

这里我将 pos1x 值更改为 slider 的值。

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

现在,当用户移动 slider 时,我想使用 pos1x 变量更改我使用 cairo 创建的矩形的坐标。但是,我只能得到调整的初始值,而不能得到变化。我无法想出一种方法来做到这一点,如果您能帮我一把,我将不胜感激。

提前致谢。

最佳答案

您需要从 value_changed() 函数中调用 gdk_window_invalidate_rect() 或类似的函数,以使 GTK+ 重新发出 expose-event

关于c - GTK 调整变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21049835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com