类
GtkPrintContext
描述 [src]
final class Gtk.PrintContext : GObject.Object
{
/* No available fields */
}
GtkPrintContext
封装打印页面时所需的环境信息。
其中包括开罗上下文和重要的参数,如页面大小和分辨率。它还允许您轻松创建 PangoLayout
和 PangoContext
对象,它们与开罗表面的字体度量匹配。
GtkPrintContext
对象会传递给 GtkPrintOperation::begin-print
、GtkPrintOperation::end-print
、GtkPrintOperation::request-page-setup
和 GtkPrintOperation::draw-page
信号在 GtkPrintOperation
对象上。
在 ::draw-page 回调中使用 GtkPrintContext
static void
draw_page (GtkPrintOperation *operation,
GtkPrintContext *context,
int page_nr)
{
cairo_t *cr;
PangoLayout *layout;
PangoFontDescription *desc;
cr = gtk_print_context_get_cairo_context (context);
// Draw a red rectangle, as wide as the paper (inside the margins)
cairo_set_source_rgb (cr, 1.0, 0, 0);
cairo_rectangle (cr, 0, 0, gtk_print_context_get_width (context), 50);
cairo_fill (cr);
// Draw some lines
cairo_move_to (cr, 20, 10);
cairo_line_to (cr, 40, 20);
cairo_arc (cr, 60, 60, 20, 0, M_PI);
cairo_line_to (cr, 80, 20);
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_set_line_width (cr, 5);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND);
cairo_stroke (cr);
// Draw some text
layout = gtk_print_context_create_pango_layout (context);
pango_layout_set_text (layout, "Hello World! Printing is easy", -1);
desc = pango_font_description_from_string ("sans 28");
pango_layout_set_font_description (layout, desc);
pango_font_description_free (desc);
cairo_move_to (cr, 30, 20);
pango_cairo_layout_path (cr, layout);
// Font Outline
cairo_set_source_rgb (cr, 0.93, 1.0, 0.47);
cairo_set_line_width (cr, 0.5);
cairo_stroke_preserve (cr);
// Font Fill
cairo_set_source_rgb (cr, 0, 0.0, 1.0);
cairo_fill (cr);
g_object_unref (layout);
}
信号
从 GObject 继承的信号 (1)
GObject::notify
当某个属性的值通过 g_object_set_property()、g_object_set() 等途径设置时,就会在一个对象上发出 notify 信号。