我只想重绘GtkTextView小部件的一部分。在绘制信号处理程序中,我尝试了很多事情,例如:
GdkRectangle rect;
gdk_cairo_get_clip_rectangle(cr, &rect);
cairo_surface_t* surface = cairo_get_target(cr);
cairo_surface_t* newsurf = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), rect.width - 50, rect.height);
cairo_push_group(cr);
cairo_set_source_surface(cr, newsurf, rect.x + 10, rect.y + 40);
cairo_fill_preserve(cr);
cairo_stroke(cr);
cairo_pop_group_to_source(cr);
cairo_paint(cr);
除了什么都没有发生。如何仅重绘cr
中脏片段区域的矩形,或者如何(按照我的尝试)修改cr
,以使表面积具有不同的尺寸?
为进一步澄清-我不画自己的东西。我想在GtkTextView的draw回调中传递的cairo_t中设置自己的表面,以更好地控制小部件的自然呈现方式。此新表面可能与cr
中的源表面相同,但已裁剪或使用gtk_widget_draw()
获得的窗口小部件的早期“快照”