gpt4 book ai didi

c++ - 使用 C/C++ 打开和编辑 SVG 文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:32 26 4
gpt4 key购买 nike

我正在开发一个必须使用 SVG 形状来创建图表的编辑器。要打开和显示 SVG,我使用 librsvg,它实际上非常好,但只对渲染 SVG 有用,而不是编辑它们。

我想访问形状的属性并更改它们的值(即宽度、大小)。

我使用 Cairo 将它们绘制到屏幕上,但我不想使用 cairo 的缩放功能,因为它与更改形状的大小不同。

我在 Win32 上使用 C++ builder XE3。

有谁知道我可以用来这样做的好 C/C++ 库吗?

感谢您的帮助。

最佳答案

Cairo 的缩放函数缩放整个坐标系,但如果您首先平移到形状的原点,则可以在单个形状上使用它;如果您将这些更改与保存/恢复对放在一起,它只会影响在此范围内完成的绘图。在描边之前重置矩阵允许您在不更改描边宽度的情况下调整绘图的大小(或者,您可以将 stroke_width 调整 1/比例因子)。

cairo_matrix_t m;
cairo_get_matrix(cr, &m);
cairo_save(cr);
cairo_translate(shape_x, shape_y);
cairo_scale(shape_w, shape_h);
//cairo_move_to(cr, x, y); //perform the actual drawing
//cairo_line_to(cr, x, y);
//cairo_closepath(cr);
cairo_set_matrix(cr, &m);
cairo_stroke(cr);
cairo_restore(cr);

如果像这样显式地重置矩阵,您实际上不再需要保存/恢复(平移和缩放除了矩阵之外不会影响任何东西,笔划重置路径)。

关于c++ - 使用 C/C++ 打开和编辑 SVG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com