Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536

Изменения svg и его отображение/сохранение

11.01.2015, 19:59. Показов 2394. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Есть svg-файлик, я хочу сделать замену, скажем, цвета одного элемента как-то так:
C++ (Qt)
1
2
3
QDomDocument doc;
doc.setContent(file);
doc.elementById("a16").attribute("style") = "fill:#000000;fill-opacity:1;stroke:none";
Как после этого мне нарисовать файл с измененным цветом у элемента, или как мне из QDomDocument простейшим путем вернуться к QFile, чтобы изменения были сохранены в этом же или в другом svg-файле?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2015, 19:59
Ответы с готовыми решениями:

SVG анимация изменения формы
Добрый день уважаемые. Подскажите пожалуйста, почему у меня не получается перевести из одной формы SVG в другую? Вот пример...

[Adobe Illustrator] Сохранение картинок в svg
Добрый день форумчане, есть набор картинок в svg, из них хочу сделать спрайт, в иллюстраторе создаю новый документ с нужными размерами,...

Сохранение в формате SVG
Всем привет! Долго лазил и искал, но ответа на свой вопрос так и не нашел. Вопрос: допустим у меня есть(или будет) проект в делфи...

13
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
12.01.2015, 10:41
C++ (Qt)
1
doc.toString();
1
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
12.01.2015, 19:19  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
doc.toString();
Вот этого хотелось избежать как раз
Рассчитывал, что есть какой-нибудь метод типа toFile или вроде того, но спасибо.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
12.01.2015, 22:53
Slip., откройте любую книжку по Qt. Там есть работа с Dom.
Читайте исходный код примеров DOM Bookmarks Example
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
13.01.2015, 05:06  [ТС]
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
откройте любую книжку по Qt. Там есть работа с Dom.
Уже открыл Шлее на эту тему, хотелось просто знать, есть ли простой способ вернуться от Dom к файлу.
А что вообще скажете, qt хорошо подойдет для обработки svg и отображения их?
Есть и другие способы, но как с этим справляется именно qt?
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
13.01.2015, 13:37
Цитата Сообщение от Slip. Посмотреть сообщение
для обработки svg
У Qt нет средств обработки SVG.

Цитата Сообщение от Slip. Посмотреть сообщение
отображения их
Qt поддерживает только SVG Tiny со всеми вытекающими.
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
14.01.2015, 02:08  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
У Qt нет средств обработки SVG.
Я имею ввиду, изменять svg как xml, сохранять в том же файле, и репэйнт.
Другое дело, что изменять можно, как я понял, только при помощи Dom, а это занимает много памяти.
А отображает нормально вполне даже при помощи QWebView. Хотя, например, масштабирование там пока не проверял.
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.01.2015, 10:26
Цитата Сообщение от Slip. Посмотреть сообщение
а это занимает много памяти
WUT? Других вариантов все равно нет. Разве что через QXmlStreamReader/Writer - но это намного сложнее по коду будет.

Цитата Сообщение от Slip. Посмотреть сообщение
А отображает нормально вполне даже при помощи QWebView.
В Qt5.4 наверное да, в предыдущих версиях будет коряво.

Цитата Сообщение от Slip. Посмотреть сообщение
Хотя, например, масштабирование там пока не проверял.
А что с ним не так?
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
14.01.2015, 18:40  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
WUT? Других вариантов все равно нет.
Древовидная структура, охватывающая весь документ же. Потоковые лишь кусочек документа берут.
Но через потоки будет совсем неудобно, это да.
Цитата Сообщение от RazrFalcon Посмотреть сообщение
А что с ним не так?
Не уверен, что будет колесом с зажатым ктрл увеличивать, но не проверил пока на своем. Да и далеко не факт, что буду QWebView использовать, так что оставим это
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.01.2015, 18:47
Цитата Сообщение от Slip. Посмотреть сообщение
Потоковые лишь кусочек документа берут.
Все равно в данном случае DOM будет быстрее потока.

Цитата Сообщение от Slip. Посмотреть сообщение
Не уверен, что будет колесом с зажатым ктрл увеличивать
По умолчанию не будет, но это можно сделать.
0
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
14.01.2015, 20:08  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
По умолчанию не будет, но это можно сделать.
У меня сделано, щас проверю для svg.

Нет, не работает. Я сомневался, что будет работать, т.к. в хроме же тоже вебкит, а там не увеличивает.

Добавлено через 1 час 13 минут
Вот еще вопрос по QRegExp появился. Пусть у меня есть тэги с атрибутами id, я хочу выполнить поиск по id.
Для этого я сравниваю
C++ (Qt)
1
domElement.attribute("id") == reg.pattern()
id представлены в виде A1_B2|A23_B45|A2_B32.
Вопрос в том, какой мне задать QRegExp?
Пробовал
C++ (Qt)
1
QRegExp reg(A*_B*);
C++ (Qt)
1
QRegExp reg(A.*_B.*);
C++ (Qt)
1
QRegExp reg(A[0-9]{1,2}_B[0-9]{1,2});
Как все-таки правильно?
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.01.2015, 20:24
Цитата Сообщение от Slip. Посмотреть сообщение
Нет, не работает. Я сомневался, что будет работать, т.к. в хроме же тоже вебкит, а там не увеличивает.
Вы о чем вообще? В Хроме нормально масштабируется SVG, как и в QWebView.

Цитата Сообщение от Slip. Посмотреть сообщение
Для этого я сравниваю
Так работать не будет.

Нужно так:
C++ (Qt)
1
domElement.attribute("id").contains(QRegExp("A[0-9]*_B[0-9]*"))
1
93 / 93 / 33
Регистрация: 17.03.2012
Сообщений: 536
14.01.2015, 20:33  [ТС]
Цитата Сообщение от RazrFalcon Посмотреть сообщение
В Хроме нормально масштабируется SVG, как и в QWebView.
Тут ты прав. У меня в файле что-то значит. Попробовал сейчас простенький пример svg, масштабирует.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.01.2015, 22:18
Менять SVG имеет смысл, если делается редактор, но редакторы обычно делаются по другому.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.01.2015, 22:18
Помогаю со студенческими работами здесь

Отображение svg-изображений в ff и IE
Доброго времени суток! Занимаюсь вёрсткой сайта, возникла проблема с отображением SVG-изображений, добавленных через CSS. Сайт:...

отображение векторного файла *.svg
Требуется прочитать фаил *.svg и отобразить его на форме. Подскажите где копать. Заранее благодарен.

Не корректное отображение svg на ios
Всем добрый день! Есть проблема с svg на ios, android и т.п воспринимают адекватно, однако на iphone получается вот такая чушь (отступ...

Отображение SVG на jpg картинке
Добрый день, столкнулась с такой проблемой: сделала простой js, который рисует кривые и точки на картинке jpg, потом с помощью php я...

Сохранение SVG изображения в формате PNG
Здравствуйте, возникла потребность в конвертации html в png, как допустим это сделано на сервисе draw.io, но даже не имею представление как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru