Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Повернуть Bitmap (http://www.flasher.ru/forum/showthread.php?t=161568)

Baltazar5000 25.07.2011 21:29

Повернуть 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, а просто заменить его новым?

silin 26.07.2011 01:03

>>Поворот происходит, но не относительно середины, а относительно точки (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);


Baltazar5000 26.07.2011 18:34

Спасибо, silin, твой пример должен работать, решение правда нашёл чуть раньше в гугле)))


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

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