信号
GtkPrintOperation::draw-page
声明
void
draw_page (
GtkPrintOperation* self,
GtkPrintContext* context,
gint page_nr,
gpointer user_data
)
描述 [src]
在每一页打印时发出。
信号处理程序必须在从 context
使用 gtk_print_context_get_cairo_context()
获得的 cairo 上下文中渲染 page_nr
‘ 的页面。
static void
draw_page (GtkPrintOperation *operation,
GtkPrintContext *context,
int page_nr,
gpointer user_data)
{
cairo_t *cr;
PangoLayout *layout;
double width, text_height;
int layout_height;
PangoFontDescription *desc;
cr = gtk_print_context_get_cairo_context (context);
width = gtk_print_context_get_width (context);
cairo_rectangle (cr, 0, 0, width, HEADER_HEIGHT);
cairo_set_source_rgb (cr, 0.8, 0.8, 0.8);
cairo_fill (cr);
layout = gtk_print_context_create_pango_layout (context);
desc = pango_font_description_from_string ("sans 14");
pango_layout_set_font_description (layout, desc);
pango_font_description_free (desc);
pango_layout_set_text (layout, "some text", -1);
pango_layout_set_width (layout, width * PANGO_SCALE);
pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
pango_layout_get_size (layout, NULL, &layout_height);
text_height = (double)layout_height / PANGO_SCALE;
cairo_move_to (cr, width / 2, (HEADER_HEIGHT - text_height) / 2);
pango_cairo_show_layout (cr, layout);
g_object_unref (layout);
}
在开始打印操作之前,使用 gtk_print_operation_set_use_full_page()
和 gtk_print_operation_set_unit()
设置 cairo 上下文的转换以满足你的需求。
默认处理程序 默认处理程序在通过 |
参数
context
-
类型:
GtkPrintContext
当前操作的
GtkPrintContext
。数据由函数的调用者拥有。 page_nr
-
类型:
gint
当前打印页的编号(基于 0)。