![]() |
BitmapData.draw() с увеличенным разрешением
Приветствую. Прошу совета.
Программа рисования. Подложка - прозрачная. Следовательно - ластик должен именно стирать, а не быть кистью с цветом фона. Пока идея в том, чтобы рисовать (Sprite.Graphics.lineTo и прочие...) в некоторой области, а затем нарисованное сразу же Bitmap.BitmapData.draw(Sprite) под эту область, а из нее - удалять векторное. Но! Окно масштабируемое. Поэтому при включенном сглаживании, растр мылится. Без - чудовищен. Как быть? Я пытаюсь изменить размеры растра, чтобы рисовать с запасом - т.е. выше экранного разрешения. В два, три раза увеличить размеры BitmapData, а перед draw() увеличивать размеры Sprite. Однако draw() рисует на Bitmap Sprite исходного размера, а не с увеличенными габаритами. Т.е. суть: как мне в AS3 растеризовать вектор с увеличенным разрешением? Масштабировать растр - не вариант. |
Обратите внимание на параметры BitmapData#draw(). Там матрицу можно указать.
|
Вроде Matrix для этого
|
Цитата:
Код AS3:
|
Спасибо за ответы, но матрица преобразования - не то.
Она будет работать с растром и масштабирование будет сделано для растра, с соответствующим ухудшением качества. Я же хочу провести растеризацию, допустим спрайта размером 100 на 100, в растр 300 на 300 через промежуточный спрайт 300 на 300 (или напрямую). Т.е. масштабирование будет сделано векторно! |
Цитата:
|
Цитата:
Да и размеры спрайта зависят от размеров содержимого. Пустому спрайту нельзя задать размеры |
Цитата:
который просто увеличат в размере и отрисуют уже увеличенным. |
Цитата:
Еще раз выражу свою мысль: В спрайте есть фигура 100х100. Я хочу получить в растре 300х300, но масштабирование выполнить векторно. Например, если я увеличу ширину спрайта до 300х300, это произойдет. Но в растр запишется 100х100. Если же, как рекомендуют, я воспользуюсь матрицей преобразования в методе draw(), то я получу РАСТРОВОЕ масштабирование. Поправьте, возможно я не понял или накосячил в коде? Код AS3:
Добавлено через 4 минуты Цитата:
Что-то я не вижу выхода из этой ситуации, который обеспечит и сохранение качества и работу ластика. Добавлено через 6 минут Вот оно! smoothing надо было включать после присваивания bitmapData. Спасибо всем, кто настаивал на использовании матрицы, особенно Aquahawk. |
Цитата:
|
caseyryan
Да он векторную картинку рисует, в графиксе, и отскейлить её нормально хочет. И В данном случае отскейлится как надо. |
Аа, я значит просто не понял что там происходит. Думал растровая картинка лежит в спрайте и он скейлится перед врисовкой в другую битмапку..
|
Разумеется. Речь шла о векторном масштабировании спрайта с векторной графикой, созданной через апи рисования. Или вы считаете, что используя матрицу преобразования в методе draw, которому передается спрайт, я получу на битмапе масштабированный в растровом режиме битмап? То есть сперва произойдет растеризация спрайта, а затем масштбироние? Я тоже так считал, хорошо остальные разубедили.
Добавлено через 3 минуты А считал я так, потому что создавал битмапдата без сглаживания, и, видимо это значение затирало включенный антиалиасинг битмап контейнера. |
Цитата:
|
Спасибо, кэп ;) Это уже выяснили на одно сообщение выше
я просто не так понял. |
| Часовой пояс GMT +4, время: 09:34. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.