|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
|
BitmapData.draw() с увеличенным разрешением
Приветствую. Прошу совета.
Программа рисования. Подложка - прозрачная. Следовательно - ластик должен именно стирать, а не быть кистью с цветом фона. Пока идея в том, чтобы рисовать (Sprite.Graphics.lineTo и прочие...) в некоторой области, а затем нарисованное сразу же Bitmap.BitmapData.draw(Sprite) под эту область, а из нее - удалять векторное. Но! Окно масштабируемое. Поэтому при включенном сглаживании, растр мылится. Без - чудовищен. Как быть? Я пытаюсь изменить размеры растра, чтобы рисовать с запасом - т.е. выше экранного разрешения. В два, три раза увеличить размеры BitmapData, а перед draw() увеличивать размеры Sprite. Однако draw() рисует на Bitmap Sprite исходного размера, а не с увеличенными габаритами. Т.е. суть: как мне в AS3 растеризовать вектор с увеличенным разрешением? Масштабировать растр - не вариант. |
|
|||||
Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
|
Спасибо за ответы, но матрица преобразования - не то.
Она будет работать с растром и масштабирование будет сделано для растра, с соответствующим ухудшением качества. Я же хочу провести растеризацию, допустим спрайта размером 100 на 100, в растр 300 на 300 через промежуточный спрайт 300 на 300 (или напрямую). Т.е. масштабирование будет сделано векторно! |
|
|||||
Цитата:
Да и размеры спрайта зависят от размеров содержимого. Пустому спрайту нельзя задать размеры |
|
|||||
[+4 08.09.13]
Регистрация: May 2012
Сообщений: 131
|
Цитата:
который просто увеличат в размере и отрисуют уже увеличенным. |
|
|||||
Регистрация: Sep 2001
Адрес: Россия, Москва
Сообщений: 67
|
Поглумиться-то - это конечно, а почитать внимательно - нет.
Еще раз выражу свою мысль: В спрайте есть фигура 100х100. Я хочу получить в растре 300х300, но масштабирование выполнить векторно. Например, если я увеличу ширину спрайта до 300х300, это произойдет. Но в растр запишется 100х100. Если же, как рекомендуют, я воспользуюсь матрицей преобразования в методе draw(), то я получу РАСТРОВОЕ масштабирование. Поправьте, возможно я не понял или накосячил в коде? import flash.display.Bitmap; import flash.display.BitmapData; import flash.geom.Matrix; var matrix : Matrix = new Matrix (); var sprite:Sprite = new Sprite(); var bitmap:Bitmap = new Bitmap(); var bitmapData:BitmapData = new BitmapData(900, 900); addChild(sprite); addChild(bitmap); matrix.scale (3, 3); sprite.graphics.lineStyle(2, 0xFF0000); sprite.graphics.moveTo(50,50); sprite.graphics.lineTo(110,110); bitmapData.draw(sprite, matrix); bitmap.smoothing = true; bitmap.bitmapData = bitmapData; bitmap.width = 300; bitmap.height = 300; bitmap.x = 130; Добавлено через 4 минуты Хотя... возможно вы правы, и ухудшение появляется уже при масштабировании самого увеличенного растра к размеру спрайта... Что-то я не вижу выхода из этой ситуации, который обеспечит и сохранение качества и работу ластика. Добавлено через 6 минут Вот оно! smoothing надо было включать после присваивания bitmapData. Спасибо всем, кто настаивал на использовании матрицы, особенно Aquahawk. |
|
|||||
Цитата:
|
Часовой пояс GMT +4, время: 21:13. |
|
« Предыдущая тема | Следующая тема » |
|
|