Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отрисовка битмапдаты (http://www.flasher.ru/forum/showthread.php?t=150191)

in4core 07.02.2011 22:34

Отрисовка битмапдаты
 
Код AS3:

var bitmapdata:BitmapData = new BitmapData(_canvas.width, _canvas.height, true, 0);
                        bitmapdata.draw(_canvas);
                        trace(bitmapdata.rect)// 0,0 гадина
                        var bitmap:Bitmap = new Bitmap(bitmapdata);
                        bitmap.filters = [new GlowFilter(0xFF0000, 1, 10, 10, 10, 3)];
                        addChildAt(bitmap,numChildren-1);
                        var ba:ByteArray = PNGEncoder.encode(bitmapdata);
                        var fr:FileReference = new FileReference();
                        fr.save(ba, 'sketch.png');

Пытаюсь отрисовать спрайт, который находится на координатах 192,2
В итоге отрисовывается только часть даты, видимо как раз из за координат. Тоесть получается что картинка сохраняется 50% пустой а 50% зарисованной.... как этого избежать и зарисовать нормально дату ?

Psycho Tiger 07.02.2011 23:01

Цитата:

public function draw (source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false) : void;
...;)

in4core 07.02.2011 23:05

Да но! Это все понятно, пробовал в матрице указать (0,0,0,0,-192,-2) разници нифига нету. Тут как то надо рассчитывать чтоли чей то...

Psycho Tiger 07.02.2011 23:15

Я бы указал tx = canvas.x, ty = canvas.y

in4core 07.02.2011 23:27

Код AS3:

var mat:Matrix = new Matrix(0,0,0,0,-_canvas.x,-_canvas.y);  что так
 
var mat:Matrix = new Matrix(0,0,0,0,_canvas.x,_canvas.y); что так

Все равно сохраняет пустую битмапу, тоесть без матрицы 50 на 50 рисовал, а так ваще пусто!

Добавлено через 2 минуты
Код AS3:

trace(bitmapdata.rect)// 0,0

Что самое интересное что при любой матрице и при любом clipRect выдает нули после draw

samana 07.02.2011 23:38

Но битмапДата отрисует спрайт начиная с его нулевых коодринат, где бы он не находился.

in4core 07.02.2011 23:42

вот и вот то, а нифига не рисует. я не могу понять в чем косяк

i.o. 07.02.2011 23:46

Код AS3:

var selfBounds:Rectangle = _canvas.getBounds( _canvas );

вот с этим и работай.

in4core 07.02.2011 23:47

Код AS3:

_canvas.graphics.beginFill(0xFFFFFF, 1);
                        _canvas.graphics.drawRect(0, 0, 566, 646);
                        _canvas.graphics.endFill();
                        _canvas.x = 192;
                        _canvas.y = 2;
                        addChild(_canvas);
 
                        _canvasM.graphics.beginFill(0xFFFFFF, 0);
                        _canvasM.graphics.drawRect(0, 0, 566, 646);
                        _canvasM.graphics.endFill();
                        _canvasM.x = 192;
                        _canvasM.y = 2;
                        addChild(_canvasM);
 
                        _canvas.mask = _canvasM;
 
private function saveToCopm(e:MouseEvent):void
                {
                        //var mat:Matrix = new Matrix(0,0,0,0,-_canvas.x,-_canvas.y);
 
                        var bitmapdata:BitmapData = new BitmapData(_canvas.width, _canvas.height, true, 0);
                        //bitmapdata.draw(_canvas,mat);
                        bitmapdata.draw(_canvas);
                        trace(bitmapdata.rect);
                        var bitmap:Bitmap = new Bitmap(bitmapdata);
                        bitmap.filters = [new GlowFilter(0xFF0000, 1, 10, 10, 10, 3)];
                        addChildAt(bitmap,numChildren-1);
                        var ba:ByteArray = PNGEncoder.encode(bitmapdata);
                        var fr:FileReference = new FileReference();
                        fr.save(ba, 'sketch.png');
                }

вот полный код
в чем косяк то

i.o. 07.02.2011 23:48

скорее всего косяк из-за наложения маски. Не любит битмапа ее.
Решение - запихни оба canvas в спрайт и отрисовывай его, тогда все получится.


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

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