【问题标题】:can't render text in cairo无法在开罗呈现文本
【发布时间】:2012-11-01 16:53:08
【问题描述】:

我是 cairo 的新手,我已阅读其网站上的教程/文档。 现在我可以制作线条、矩形,基本上我可以渲染图像但不能渲染文本。

我正在使用以下代码

cairo_select_font_face (cr, "monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAl);

    cairo_set_font_size (cr, 14);

    cairo_set_source_rgb (cr, 1, 1, 1);

    cairo_move_to (cr, 50, 50);

    cairo_show_text (cr, "Print Something");

谁能指出我的错误?

【问题讨论】:

  • 下面的答案没有——但似乎你是用白色画的,这是故意的吗(结果证明这是我类似问题的解决方案,我必须专门设置 source_rgb)?

标签: cairo


【解决方案1】:

与 cairo 邮件列表中的答案相同(似乎在某处丢失了):

您没有做错任何事情(好吧,也许使用玩具文本 API,但这应该仍然有效)并且您的代码对我来说很好。这是我测试的完整代码:

#include <cairo.h>
int main()
{
        cairo_surface_t *surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 200, 200);
        cairo_t *cr = cairo_create(surface);
        cairo_surface_destroy(surface);

        /* Fill everything with white */
        cairo_set_source_rgb(cr, 1, 1, 1);
        cairo_paint(cr);

        /* Draw some text */
        cairo_select_font_face (cr, "monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
        cairo_set_font_size (cr, 14);
        cairo_set_source_rgb (cr, 0, 0, 0);
        cairo_move_to (cr, 0, 50);
        cairo_show_text (cr, "Print Something");

        cairo_surface_write_to_png(cairo_get_target(cr), "out.png");
        cairo_destroy(cr);
        return 0;
}

【讨论】:

  • 嗨,谢谢。我不确定我到底出了什么问题。我尝试了与你编写的相同的代码,但我什么也没看到。希望我能尽快进行排序。然后,我会在这里发布有什么问题。
  • 上面的完整示例不适合您?您使用的是哪个 cairo 版本?你能添加 printf("%d\n", (int) cairo_status(cr));在调用 cairo_destroy() 之前?我认为,如果一切正常,那应该打印 0。
  • 我打印了它,得到 35(即“cairo status device error”)。但是,如果我尝试绘制一个矩形,我会看到它,那为什么文本会出错?
  • 我检查了,这个错误的意思是:“对设备的操作导致了一个未指定的错误”。这发生在 show_text() 调用之后。我使用的 cairo 版本是 1.10
  • gcm 到底是什么?这似乎不是开罗的一部分(我猜这意味着你不走运)
猜你喜欢
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
相关资源
最近更新 更多