Открывайте и редактируйте файлы SVG, используя C / Stack Overflow

Я разрабатываю редактор, который должен использовать формы SVG для создания диаграмм.
Чтобы открыть и отобразить SVG, я использую librsvg, который на самом деле довольно хорош, но полезен только для рендеринга SVG, а не для их редактирования.

Я хотел бы получить доступ к свойствам фигуры и изменить их значения (то есть ширину, размер).

Я использую Cairo, чтобы нарисовать их на экране, но я не хочу использовать функцию масштабирования Cairo, потому что это не то же самое, что изменение размера фигур.

Я использую C ++ Builder XE3 на Win32.

Кто-нибудь знает хорошую библиотеку C / C ++, которую я мог бы использовать для этого?

Спасибо за вашу помощь.

1

Решение

Функция масштабирования Каира масштабирует всю систему координат, но вы можете использовать ее для отдельной фигуры, если сначала переведите ее в начало координат; и если вы ограничите эти изменения парой сохранения / восстановления, это повлияет только на рисование, выполненное в пределах этого промежутка. Сброс матрицы перед штриховкой позволяет изменить размер чертежа без изменения ширины штриха (поочередно вы можете отрегулировать штрих-ширину на 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);

И если сбросить матрицу в явном виде, как это, вам больше не нужно сохранять / восстанавливать (преобразование и масштабирование не влияют ни на что, кроме матрицы, и обводка сбрасывает путь).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]