Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   BitmapData.draw рисование части области (http://www.flasher.ru/forum/showthread.php?t=173133)

Андрей911 24.12.2011 18:38

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)

Jewelz 24.12.2011 18:41

Код AS3:

m = new Matrix()
m.tx = W;
m.ty = H;


Андрей911 25.12.2011 11:30

Так я разобрался оказывается неправильно матрицу записывал. Надо было так, вот правильная матрица
Код 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();


Jewelz 25.12.2011 15:32

Цитата:

Сообщение от Андрей911 (Сообщение 1053511)
Это тоже не работает, вообще не понимаю зачем сдвиг приравнивать к высоте и ширине

W и H написал для примера, буквально не нужно было воспринимать, а только как пример

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

Андрей911 25.12.2011 19:11

Да, спасибо за ответ, меня это натолкнуло на мысль что с материй что-то не так сделал. У меня сверху обозначения были W и H, поэтому я и подумал что Вы их использовали.


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

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