将绘制的线转换为bitmapdata - Bitmap.draw()+ Sprite.graphics - 不会工作

时间:2012-08-22 13:48:30

标签: actionscript-3 bitmapdata

编辑:它自己工作的转换/复制过程,我只是想弄清楚如何告诉bitmapdata,要复制的阶段的哪一部分 - 我试图通过电影将画布解决为x = 0 y = 0没有表现出任何变化。 唯一显示变化的是我在绘制之前将画布移动到零,但这完全是错误的,因为具有负坐标的绘图部分不会被复制,因为坐标更改只影响位图,如果你之前这样做的话你开始画画了

OLDER ENTRY: 我想将Sprite.graphics转换为bitmapData,因为我有一个drawTool,它允许用户绘制线条,我认为它们位于Sprite.grahpics中。

我需要将这些行转换为bitmapdata,因为这允许我稍后变形,但我无法使用此

Bitmapdata.draw(Sprite.graphics);

仅使用Sprite而不是Sprite.graphics不会显示任何结果= \ 需要帮助!

3 个答案:

答案 0 :(得分:2)

如果您只想绘制某个部分和(0,0)以外的原点,请使用矩阵。 Adobe文档中有很多关于此的内容,或者是一个很好的例子:

http://www.quasimondo.com/archives/000670.php

答案 1 :(得分:0)

绘图时仅使用graphics。实际的Sprite对象包含您想要的内容,因此按照惯例,只需执行以下操作:

BitmapData.draw(Sprite);

虽然是一个文字的例子:

var mySprite:Sprite = new Sprite();
// add lines etc using mySprite.graphics

var myBitmapData:BitmapData = new BitmapData(mySprite.width, mySprite.height);
myBitmapData.draw(mySprite);

答案 2 :(得分:0)

我认为,您还没有完全理解使用情况BitmapData.draw()

BitmapData.draw()可以使用All DisplayObject(Sprite,MovieClip,Shape,Text,Video ...)绘图。因为他们有一个IBitmapDrawable。(更多信息参考adobe文档是最好的老师。)

如果您想要实施Paint Board。参考下面的代码。非常简单的油漆板。但有些人会帮助你。

尝试复制&糊。

import flash.display.Sprite;
import flash.events.Event;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.events.MouseEvent;

var isDraw:Boolean = false;
var brush:Sprite =new Sprite();
brush.graphics.beginFill(0x0000ff);
brush.graphics.drawCircle(0,0,5);
brush.graphics.endFill();

var canvasData:BitmapData = new BitmapData(600,400, false);
var canvas:Bitmap = new Bitmap(canvasData);
addChild(canvas);

stage.addEventListener(MouseEvent.MOUSE_DOWN, onDrawStart);
stage.addEventListener(MouseEvent.MOUSE_UP, onDrawStop);
stage.addEventListener(Event.ENTER_FRAME, render);

function onDrawStart(e:MouseEvent):void
{
    isDraw = true;
}

function onDrawStop(e:MouseEvent):void
{
    isDraw = false;
}

function render(e:Event):void
{
    if(!isDraw) return;

    brush.x = mouseX;
    brush.y = mouseY;

    canvasData.draw(brush,brush.transform.matrix);
}