Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Увеличить размер спрайта, сохраняя содержимое его Graphics (http://www.flasher.ru/forum/showthread.php?t=208055)

PrincessRoma 31.05.2014 19:36

Увеличить размер спрайта, сохраняя содержимое его Graphics
 
в рисовалке диаграмм есть _Canvas - холст, на котором все рисуется, обычный Sprite.
Появилась необходимость добавить функцию увеличения / уменьшения его ширины, но есть проблема - при увеличении свойства _Canvas.width вся нарисованная ранее графика растягивается вместе с ним.
Какие есть идеи?

samana 31.05.2014 21:01

Фон для холста, сделайте отдельным объектом и при изменении размеров фона, ваш холст не пострадает.

PrincessRoma 31.05.2014 21:33

не совсем понял вас - в каком смысле "фон для холста" ? Я же в любом случае отрисовываю объекты на холсте и сохраняю потом само содержимое холста в файл -изображение. Можете поподробнее выразить вашу мысль?

MikroAcse 31.05.2014 21:58

А зачем изменять его ширину/высоту?
Даже за его "пределами" рисовать можно, и он сам изменить размер.
То есть вы изменяете размер рамки, а не самого холста.

PrincessRoma 31.05.2014 22:28

Т.е. вы предлагаете изначально сделать Canvas большим, а пользователю просто предоставлять возможность увеличивать размер доступной для рисования "области". Я тоже об этом думал, но дело в том, что сохраняю я изображение с холста в Bitmap при помощи функции draw, т.е. это выглядит вот так:
Код AS3:

var raw:BitmapData = new BitmapData(_Canvas.width,_Canvas.height);
raw.draw(_Canvas);

и таким образом я не совсем понимаю, как сохранить часть Canvas-а на которой что-то нарисовано, а не весь вообще

LifeIsRhythm 31.05.2014 22:38

Или так или draw + matrix.
Код AS3:

package 
{
        import flash.display.Sprite;
 
        public class TestCanvas extends Sprite
        {
                public function TestCanvas()
                {
                        var _canvas:Sprite = new Sprite();
                        _canvas.graphics.beginFill(0xEAA551);
                        _canvas.graphics.drawRect(0, 0, 300, 100);
                        _canvas.graphics.endFill();
 
                        _canvas.x = 200;
                        _canvas.y = 200;
                        super.addChild(_canvas);
 
                        _canvas.graphics.beginFill(0xD6E952);
                        _canvas.graphics.drawRect( -50, 0, 50, 100);
                        _canvas.graphics.drawRect( 300, 0, 50, 100);
                }
        }
}


PrincessRoma 31.05.2014 22:42

Так, отбой тревоги) Я же просто могу "дорисовывать" фон для _Canvas-а прямо на его Graphics. Я так понимаю, в некоторых постах мне это и предлагали делать ) Всем большое спасибо )

MikroAcse 31.05.2014 23:25

Цитата:

и таким образом я не совсем понимаю, как сохранить часть Canvas-а на которой что-то нарисовано, а не весь вообще
Как раз вы сохраняете таким образом то, что нарисовано.
sprite.width/height - это ширина контента в нём, а не то, что вы задали.
То есть, если вы нарисуете в нём круг диаметром 15 пикселей, то:
Код AS3:

trace(sprite.width, sprite.height); // 15 15



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

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