Форум 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=142974)

Dragon rideR 04.08.2010 14:07

Как получить снимок области экрана заданного размера
 
Подскажите как сделать снимок области экрана нужно размера.
Т.е. у меня есть клип Page, грубо говоря там изображение 2х страниц стоящих рядом(раскрытая книга). Как мне сделать два отдельных BitmapData чтобы в одном хранилась левая страница, а другом правая.
Левую я получаю таким образом, как получить правую?
Код AS3:

clip=edit_mc.template_mc.page23 as Sprite;
bmp=new BitmapData(clip.width/2, clip.height, true, 0);
bmp.draw(clip);
Params._page2_bitmap=bmp;
clip=edit_mc.template_mc.page23 as Sprite;
//вот как тут сдвинуть вправо область снимка??
bmp=new BitmapData(clip.width/2, clip.height, true, 0);
bmp.draw(clip);
Params._page3_bitmap=bmp;


mry 04.08.2010 14:21

copyPixels
позволяет скопировать кусок битмапы

hartman 04.08.2010 14:24

Есть вариант заглянуть в хелп и увидеть, что в draw есть параметр clipRect, в нем задается область снимка:
draw(source:IBitmapDrawable, matrix:Matrix = null, colorTransform:ColorTransform = null, blendMode:String = null, clipRect:Rectangle = null, smoothing:Boolean = false)

Dragon rideR 04.08.2010 14:44

Что то попробовал вот так не получилось, битмап вообще пустой получается (
Код AS3:

clip=edit_mc.template_mc.page23 as Sprite;
var rect:Rectangle = new Rectangle(clip.width/2, 0, clip.width/2, clip.height);
bmp.draw(clip,null,null,null,rect,true);


hartman 04.08.2010 15:02

В том же хелпе сказано, что вместо matrix можно оставить null, но colorTransform = new ColorTransform(), и, наверное, blendMode = "normal"

Dragon rideR 04.08.2010 15:09

хмм сделал так
Код AS3:

bmp.draw(clip,null,new ColorTransform(),"normal",rect,true);

все равно битмап чистый. может я не правильно Rectangle указал?

tsarapkabel 04.08.2010 15:47

Попробуй так:
Код AS3:

bmp=new BitmapData((clip.width/2+сlip.width, clip.height, true, 0);



Либо другой вариант:

Левая:

Код AS3:

var leftPageCopyBmd:BitmapData = new BitmapData(clip.width/2, clip.height); //тут задаёшь размер копируемой области
var lRect:Rectangle = new Rectangle (0, 0, clip.width/2, clip.height); //тут задаёшь верхнюю левую точку левой страницы x и y и размеры ширины/высоты прямоугольника
leftPageCopyBmd.copyPixels (clipName, lRect, new Point());
 
var leftPageCopy:Bitmap = new Bitmap(leftPageCopyBmd);
leftPageCopy.x = 100; // сюда задавай x
leftPageCopy.y = 100; // сюда задавай y
addChild(leftPageCopy);

Правая
Код AS3:

var rightPageCopyBmd:BitmapData = new BitmapData(clip.width/2, clip.height); //тут задаёшь размер копируемой области
var rRect:Rectangle = new Rectangle (clip.width/2, 0, clip.width/2, clip.height); //тут задаёшь верхнюю левую точку правой страницы x и y и размеры ширины/высоты прямоугольника
rightPageCopyBmd.copyPixels (clipName, rRect, new Point());
 
var rightPageCopy:Bitmap = new Bitmap(rightPageCopyBmd);
rightPageCopy.x = 300; // сюда задавай x
rightPageCopy.y = 100; // сюда задавай y
addChild(rightPageCopy);

P.s.: авторы Шуп и Россер

Dragon rideR 04.08.2010 16:08

нет он все равно создает снимок начиная с координат 0,0 клипа

tsarapkabel 04.08.2010 16:15

Как это ты так быстро попробовал? Пробуй второй вариант, который я описал.

Dragon rideR 04.08.2010 16:21

Цитата:

Сообщение от mry (Сообщение 926934)
copyPixels
позволяет скопировать кусок битмапы

Спасибо помогло, сделал так:
Код AS3:

bmp=new BitmapData(clip.width, clip.height, true, 0);
                                bmp.draw(clip);
 
                                var rect:Rectangle = new Rectangle(0, 0, clip.width/2, clip.height);
                                var pt:Point = new Point(0, 0);
                                var bmp1:BitmapData=new BitmapData(clip.width/2, clip.height, true, 0);
                                bmp1.copyPixels(bmp, rect,pt);
                                Params._page2_bitmap=bmp1;
                                var rect2:Rectangle = new Rectangle(clip.width/2, 0, clip.width/2, clip.height);
                                var bmp2:BitmapData=new BitmapData(clip.width/2, clip.height, true, 0);
                                bmp2.copyPixels(bmp, rect2,pt);
 
                                Params._page3_bitmap=bmp2;

Спасибо всем за помощь


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

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