我想使用gtk_render_line
代替cairo_line_to
。
我已更换了这些电话,但保留了cairo_set_line_width(cc,2)
并且线路已更改为1px宽。
因为gtk_render_line使用了样式上下文,我想我必须设置一个可以控制它的CSS属性。
控制gtk_render_line呈现的线条粗细的属性名称是什么?
答案 0 :(得分:1)
根据gtk_render_line
的来源,实际绘图由gtk_do_render_line
完成,其来源如下:
gtk_do_render_line (GtkStyleContext *context,
cairo_t *cr,
gdouble x0,
gdouble y0,
gdouble x1,
gdouble y1)
{
const GdkRGBA *color;
cairo_save (cr);
color = _gtk_css_rgba_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
cairo_set_line_width (cr, 1); /* <----------------- Relevant for this question */
cairo_move_to (cr, x0 + 0.5, y0 + 0.5);
cairo_line_to (cr, x1 + 0.5, y1 + 0.5);
gdk_cairo_set_source_rgba (cr, color);
cairo_stroke (cr);
cairo_restore (cr);
}
在这里我们可以看到线条的宽度不是由任何CSS属性决定的,它只是固定为宽度1
。所以没有属性或其他方法可以直接在Gtk中改变它......