Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.12.2011, 18:38
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 1  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
По умолчанию BitmapData.draw рисование части области

Подскажите, как можно нарисовать в BitmapData.draw только часть сцены. Уже целый день мучаюсь.
Нужно нарисовать участок с координатами (x0,y0) и шириной W x H. C размерами проблем не возникает, но рисуется почему-то всегда область начиная от точки (0,0)

В конце концов обошелся кривым обходным путем

Код AS3:
        var bit:BitmapData=new BitmapData(this.width,this.height);
	var rect:Rectangle=new Rectangle(x0,y0,W,H);
	bit.draw(this,null,null,null,rect);
	var nextBit:BitmapData=new BitmapData(W,H);
	nextBit.copyPixels(bit,rect,new Point(0,0));
	jpeg=JPEGEncoder.encode(nextBit,100); //Изображение того участка которого надо.
	nextBit.dispose();
	bit.dispose();
но чувствую, что как-то все таки можно указать координаты области для рисования напрямую. Подскажите, код знающие люди.

Пробовал так
Код AS3:
        var bit:BitmapData=new BitmapData(W,H);
	bit.draw(this,new Matrix(1,0,1,0,x0,y0));
	jpeg=JPEGEncoder.encode(bit,100); 
	bit.dispose();
Все равно рисуется область начиная от (0,0)

Старый 24.12.2011, 18:41
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 2  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Код AS3:
m = new Matrix()
m.tx = W;
m.ty = H;
__________________
low +

Старый 25.12.2011, 11:30
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 3  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Так я разобрался оказывается неправильно матрицу записывал. Надо было так, вот правильная матрица
Код AS3:
var matrix:Matrix=new Matrix(1,0,0,1,-x0,-y0);
Тогда все работает как надо.
П.С.
Код AS3:
m = new Matrix()
m.tx = W;
m.ty = H;
Это тоже не работает, вообще не понимаю зачем сдвиг приравнивать к высоте и ширине

Добавлено через 1 минуту
Полный код
Код AS1/AS2:
        var bit:BitmapData=new BitmapData(W,H);
	bit.draw(this,new Matrix(1,0,0,1,-x0,-y0));
	jpeg=JPEGEncoder.encode(bit,100); 
	bit.dispose();

Старый 25.12.2011, 15:32
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 4  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Цитата:
Сообщение от Андрей911 Посмотреть сообщение
Это тоже не работает, вообще не понимаю зачем сдвиг приравнивать к высоте и ширине
W и H написал для примера, буквально не нужно было воспринимать, а только как пример

сдвиг происходит, но в противоположную сторону, собственно вы это уже выяснили
__________________
low +

Старый 25.12.2011, 19:11
Андрей911 вне форума Посмотреть профиль Отправить личное сообщение для Андрей911 Найти все сообщения от Андрей911
  № 5  
Ответить с цитированием
Андрей911
 
Аватар для Андрей911

Регистрация: Jun 2011
Сообщений: 127
Да, спасибо за ответ, меня это натолкнуло на мысль что с материй что-то не так сделал. У меня сверху обозначения были W и H, поэтому я и подумал что Вы их использовали.

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:28.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:28.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.