gpt4 book ai didi

c - 在GtkTextView中绘图,然后清除

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

我只是在“绘制”信号中的 GtkTextView 中绘制特定内容,

在下一个信号发射时,我在 GtkTextView 中绘制不同的东西。

<小时/>

在下一次信号调用中,如果没有任何内容可绘制,则会清除之前的所有绘制,这很好。

但是当它要绘制新内容时,它会立即绘制所有先前的内容,而不仅仅是需要的内容。这可不好。

<小时/>

我尝试了很多方法来防止这种行为,但与 cairo_save()cairo_restore() 的每种可能的组合似乎都不起作用。

如何才能使其不一次绘制所有先前的绘图,而只绘制新的绘图?

最佳答案

“draw”信号应该仅用于改变 GtkTextView 的恒定外观。

<小时/>

对于我想要的,这可能会按要求工作:

void draw_on_textview (GtkWidget* textview)
{
cairo_t* cr = gdk_cairo_create(gtk_widget_get_window(textview));

// Do ALL the drawing AT ONCE here..

cairo_destroy(cr);
}

何时需要删除内容:

gtk_widget_queue_draw(textview);
<小时/>

但是,这与适当的方法仍然略有不同。正如 @jcoppens 所说,必须使用 draw_layer 来代替。因此,我不认为这是一个答案,而是如果没有其他人提供更好的方法,我可以选择使用一些可能的方法。

关于c - 在GtkTextView中绘图,然后清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38649940/

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