12.03.2014, 22:43
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
Масштабирование в svg без потери качества
Собственно вопрос в заголовке. Экспериментирую с SVG. Нужно сжать некую структуру элементов в 2 раза по оси Y, картинка получается замыленной из-за трансформации.
<svg>
<g transform="scale(1, 0.5)">
<path .../>
<path .../>
<path .../>
</g>
</svg>
Конечно есть вариант на JS координаты заново пересчитывать при изменения размера окна, но может есть более элегантное решение, подскажите пожалуйста кто знает
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Последний раз редактировалось simple, 12.03.2014 в 22:50.
|
|
13.03.2014, 12:06
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
viewBox относительный задать. А там уж как хочешь размер самого svg меняй.
__________________
29375, 35
|
|
23.03.2014, 22:33
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
спасибо, помогло. но появилась новая проблема, цвет линии я явно указываю черным а на деле получается какой то светлосерый, это особенность viewBoxa менять цвет или я что то неправильно делаю?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
|
|
23.03.2014, 22:38
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
simple, если линия однопиксельная попробуй сдвинуть на 0.5px.
Ещё может быть если цвет black, а не #000.(маловероятно)
Но вообще такого быть не должно.)
__________________
29375, 35
|
|
23.03.2014, 22:45
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
|
|
23.03.2014, 22:46
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
ну вот например я так делаю:
<svg width="300" height="300" viewBox="0,0, 3000,3000">
<path d="M1 1 V1500" stroke-width="1" stroke="#000000"/>
</svg>
Мне нужно получить тонкую вертикальную черную линию, а на деле получается очень светлая линия.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Последний раз редактировалось simple, 23.03.2014 в 22:53.
|
|
23.03.2014, 23:10
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Ну она и получается очень тонкой: 0.1px в данном случае. Какбэ причины "свелости" очевидны, не?)
__________________
29375, 35
|
|
24.03.2014, 14:46
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
почему 0.1? ведь в stroke-width = 1? а как тогда сделать линии толщиной в 1px что то я не догоняю.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
|
|
25.03.2014, 13:18
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,588
|
|
Хе, хе. В этом весь подвох viewBox.
Тут уж выбирайте - либо относительность размеров, либо точные пиксели.
Сообщение от simple
|
почему 0.1? ведь в stroke-width = 1?
|
Потому что
Сообщение от simple
|
<svg width="300" height="300" viewBox="0,0, 3000,3000">
|
Т.е. на 300 пикселей 3000 точек viewBox'а. А stroke-width(как и всё остальное) считается в этих самх относительных единицах, а не пиксилях. Просто по дефалту они равны пикселям.)
__________________
29375, 35
Последний раз редактировалось Aetae, 25.03.2014 в 13:23.
|
|
25.03.2014, 21:17
|
|
Профессор
|
|
Регистрация: 23.09.2010
Сообщений: 247
|
|
Вот теперь до меня дошло, как оказалось я неправильно понял систему координат в viewBox. Спасибо.
т.е получается что бы было все красиво придется все таки расcчитывать на JS координаты и потом уже рисовать по ним. Пытаюсь сделать простенькую визуализацию данных. Знаю что велосипед, просто охота разобраться для себя в тонкостях SVG.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
|
|
|
|