首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加载SVG作为Cairo图像面的最佳方式是什么?

加载SVG作为Cairo图像面的最佳方式是什么?
EN

Stack Overflow用户
提问于 2021-03-02 18:23:17
回答 1查看 348关注 0票数 1

我有一个基于C++的简单libCairo程序,用于绘制一些图像(例如,将一个图像放到另一个图像上,编写一些文本,等等)。我需要加载一些SVG文件(以避免缩放工件),然后将它们绘制到从PNG加载的表面上。

我有一个包装类,它包含一个cairo_t上下文,并允许从该上下文获取一个表面:

代码语言:javascript
运行
复制
cairo_surface_t *CairoImage::getSurface() {
    return cairo_get_target(context);
}

我现在像这样加载SVG文件:

代码语言:javascript
运行
复制
CairoImage::CairoImage(const char *path, double width, double height) {
    auto surface = cairo_svg_surface_create(path, width, height);
    context = cairo_create(surface);
}

我就是这样把一幅画画到另一幅上的:

代码语言:javascript
运行
复制
    cairo_set_source_surface(context, image.getSurface(), 0, 0);
    cairo_rectangle(context, x, y, image.getWidth(), image.getHeight());
    cairo_clip(context);
    cairo_paint(context);
    cairo_reset_clip(context);

但它不起作用(它只是没有画任何东西)。如何解决这一问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-03 16:13:59

Cairo可以编写SVG文件,但不能读取它们。

要加载SVG文件,需要一些类似的东西,比如librsvg。我只是想让Google给我一个简短的图书例子,但没有找到。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66445019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档