Я сейчас работаю над проектом для моей школы.Мне нужно сделать SVG генератор ландшафта в C ++.Мой учитель дает нам различные функции C ++, которые рисуют svg-формы на output.svg.Затем мы открываем файл в веб-браузере и появляется сгенерированный ландшафт.Его функции пишут теги HTML5 для рисования svg, например <circle>
и <polygon>
.
Например, функция рисования шестиугольника:
void Svgfile::addHexagone(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,
double x5,double y5,double x6,double y6, std::string colorFill){
m_ostrm << "<polygon points=\"" << x1 << "," << y1 << " " << x2 << "," << y2 << " " << x3 << "," << y3
<< " " << x4 << "," << y4 << " " << x5 << "," << y5 << " " << x6 << "," << y6
<< "\" style=\"fill:" << colorFill << "\" ></polygon>";
Проблема в том, что моя программа должна масштабироваться по-разномуКаждый объект SVG моего ландшафта добавляет разнообразия.Я сделал очень простой камень, представленный серым шестиугольником, используя addHexagone
.Но <polygon>
использует положение 6 точек, и единственный способ найти для него изменение - это умножить каждый x и y каждой точки на переменную *size
.Это работает, но это меняет положение моей фигуры, а это не то, что мне нужно.Я прочитал несколько документов об атрибуте ViewBox
в SVG, но мне не удалось его использовать.Я также попытался добавить атрибут transform='size(10em)'
, но ничего не изменилось.