Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2014, 22:43
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2014, 12:06
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

viewBox относительный задать. А там уж как хочешь размер самого svg меняй.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2014, 22:33
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

спасибо, помогло. но появилась новая проблема, цвет линии я явно указываю черным а на деле получается какой то светлосерый, это особенность viewBoxa менять цвет или я что то неправильно делаю?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2014, 22:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

simple, если линия однопиксельная попробуй сдвинуть на 0.5px.
Ещё может быть если цвет black, а не #000.(маловероятно)
Но вообще такого быть не должно.)
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2014, 22:45
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

https://gist.github.com/pepelsbey/1888739
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2014, 22:46
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 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.
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2014, 23:10
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,588

Ну она и получается очень тонкой: 0.1px в данном случае. Какбэ причины "свелости" очевидны, не?)
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 24.03.2014, 14:46
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

почему 0.1? ведь в stroke-width = 1? а как тогда сделать линии толщиной в 1px что то я не догоняю.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #9 (permalink)  
Старый 25.03.2014, 13:18
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 25.03.2014, 21:17
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Вот теперь до меня дошло, как оказалось я неправильно понял систему координат в viewBox. Спасибо.

т.е получается что бы было все красиво придется все таки расcчитывать на JS координаты и потом уже рисовать по ним. Пытаюсь сделать простенькую визуализацию данных. Знаю что велосипед, просто охота разобраться для себя в тонкостях SVG.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SVG масштабирование Ninja Общие вопросы Javascript 4 18.10.2013 16:12
SVG CSS, SVG to WOFF kobezzza Firefox/Mozilla 2 29.03.2013 15:59
Как изменить хтмл без потери значений. PashPP Общие вопросы Javascript 2 04.08.2012 23:34
масштабирование и фон в svg vogdb Элементы интерфейса 0 04.02.2012 17:10
Перезагрузка страницы без потери Unknow Я не знаю javascript 5 08.06.2009 13:58