更改gtk_render_line

时间:2016-07-25 10:09:47

标签: gtk3

我想使用gtk_render_line代替cairo_line_to

我已更换了这些电话,但保留了cairo_set_line_width(cc,2)并且线路已更改为1px宽。

因为gtk_render_line使用了样式上下文,我想我必须设置一个可以控制它的CSS属性。

控制gtk_render_line呈现的线条粗细的属性名称是什么?

1 个答案:

答案 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中改变它......