Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как скопировать часть изображения в Bitmap (http://www.flasher.ru/forum/showthread.php?t=136642)

ovevil 22.02.2010 01:41

Как скопировать часть изображения в Bitmap
 
Доброе время суток. Не могу решить одну проблему. Есть большое векторное изображение. Во время маштабирования его приходится переводить в растр
Код AS1/AS2:

function rasterizeMovieClip (obj:MovieClip):MovieClip {
        var bd_mc:MovieClip = this.createEmptyMovieClip (obj._name + '_bd', 1);
        bd_mc._visible = false;
        _root.bd = new BitmapData(_root.firstWidth, _root.firstHeight, true, null);
        _root.bd.draw(obj);
        bd_mc.attachBitmap (_root.bd, bd_mc.getNextHighestDepth());
        bd_mc.forceSmoothing = true;
        bd_mc._x = obj._x ;
        bd_mc._y = obj._y ;
        bd_mc._width = obj._width;
        bd_mc._height = obj._height;
        return bd_mc;
}

Вектороное изображение может меняться, но не целиком, а фрагментом(10х10 пикселей). Можно ли сделать так, чтобы при изменении векторной картинки не надо было полностью обновлять растр, а лишь изменять изменившийся фрагмент?

Заранее спасибо.

expl 22.02.2010 16:28

Цитата:

Можно ли сделать так, чтобы при изменении векторной картинки не надо было полностью обновлять растр, а лишь изменять изменившийся фрагмент?
У метода draw() есть параметр clipRect:Rectangle - его и используем
Код AS1/AS2:

// отрисовываем область с началом в (20,20) и размером 10x10 в то же место
// на BitmapData
bitmap.draw(obj, new Matrix(), null, null, new Rectangle(20, 20, 10, 10));

Только надо будет затереть эту область перед перерисовкой цветом фона или прозрачным цветом, чтобы не наслаивалось:
Код AS1/AS2:

bitmap.fillRect(new Rectangle(20, 20, 10, 10), 0x00000000);


ovevil 22.02.2010 17:59

Большое спасибо, буду пробовать


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

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