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



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

我想访问形状的属性和改变他们的值(即宽度,大小)。

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

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

有谁知道一个好的C/c++库,我可以用它来做这件事吗?

谢谢你的帮助。

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

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);

如果像这样明确地重置矩阵,你实际上不需要保存/恢复了(平移和缩放不会影响任何东西,除了矩阵,笔画重置路径)。

最新更新