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

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

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

Регистрация: Jul 2011
Сообщений: 7
По умолчанию Повернуть Bitmap

Имеется Битмап, нужно повернуть его на 90 градусов для последующего сохранения в файл.

Пытаюсь сделать так:

var rotationMatrix:Matrix = new Matrix();
rotationMatrix.rotate(90*Math.PI/180);

var image2 = new BitmapData(imageContainer[imageNumber].getChildByName('image').width,imageContainer[imageNumber].getChildByName('image').height,true);
image2.draw(imageContainer[imageNumber].getChildByName('image'), rotationMatrix, null, null, null, true);
var image:Bitmap=new Bitmap(image2);
image.name='image';

imageContainer[imageNumber].removeChildAt(0);
imageContainer[imageNumber].addChild(image);

Поворот происходит, но не относительно середины, а относительно точки (0,0) из за чего он выходит за размеры Битмапы. Как правильно повернуть его? И есть ли возможность не удалять старый image, а просто заменить его новым?

Старый 26.07.2011, 01:03
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Поворот происходит, но не относительно середины, а относительно точки (0,0)
перед поворотом надо сдвинуть в середину, а после вернуть обратно
Код AS3:
var bmd:BitmapData = new BitmapData(source.height, source.width);
var rotationMatrix:Matrix = new Matrix();
var dX:Number = source.width / 2;
var dY:Number = source.height / 2;
rotationMatrix.translate( -dX, -dY);
rotationMatrix.rotate(Math.PI / 2);
rotationMatrix.translate( dY, dX);
 
bmd.draw(source, rotationMatrix, null, null, null, true);
var image:Bitmap = new Bitmap(bmd);

Старый 26.07.2011, 18:34
Baltazar5000 вне форума Посмотреть профиль Отправить личное сообщение для Baltazar5000 Найти все сообщения от Baltazar5000
  № 3  
Ответить с цитированием
Baltazar5000

Регистрация: Jul 2011
Сообщений: 7
Спасибо, silin, твой пример должен работать, решение правда нашёл чуть раньше в гугле)))

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

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

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


 


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


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