如何使用BitmapData.fillRect()?

时间:2012-02-08 12:20:42

标签: flash actionscript-3 flex bitmap bitmapdata

当我使用它时,唯一填充的是白色矩形,与参数无关。 这就是我的工作:

var map:Bitmap = new Bitmap (new BitmapData(200,200))
map.bitmapData.fillRect(new Rectangle(0,0,100,100),0xFF0000)

将100x100矩形添加到位图,但它始终为白色形状。我希望它是红色的,如参数(0xFF0000)中设置的那样。

5 个答案:

答案 0 :(得分:4)

颜色参数应为ARGB格式,表示第一个值为alpha。不确定当发送3字节值而不是4时会发生什么。请尝试使用0xFFFF0000。

希望有所帮助!

答案 1 :(得分:2)

map.bitmapData.fillRect(new Rectangle(0,0,100,100),0xFFFF0000)

答案 2 :(得分:1)

已经发现了答案。我正在解析颜色的RGB参数,而我应该传递ARGB。

因此,因为我想要红色,我应该写0xFFFF0000而不是0xFF0000

var map:Bitmap = new Bitmap (new BitmapData(200,200))
map.bitmapData.fillRect(new Rectangle(0,0,100,100),0xFFFF0000)

答案 3 :(得分:0)

import gs.TweenMax;
import fl.transitions.easing.*;
import flash.display.Bitmap;
import flash.display.BitmapData;
var container:Sprite = new Sprite();
var b:Box = new Box();
b.x = b.y = 0;
container.addChild(b);
var bmd:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
var bmp:Bitmap = new Bitmap(bmd);
this.addChild(bmp);
TweenMax.to(b, 1.5, {x: 525, y: 375, ease: Regular.easeOut, onComplete: doComplete});
function doComplete():void
{
    this.removeEventListener(Event.ENTER_FRAME, drawAnimation);
}
this.addEventListener(Event.ENTER_FRAME, drawAnimation);
function drawAnimation(evt:Event):void
{
    bmd.fillRect(bmd.rect, 0);
    bmd.draw(container);
}

bmd.fillRect(bmd.rect,0);

它基本上通过使用BitmapData矩形的大小来填充具有透明度的BitmapData对象的区域来定义要填充的区域。使用BitmapData时,一个非常方便的小技巧。如果你拿出这行代码,你会看到盒子仍在移动,但在它后面留下“条纹”。

有关详情,请访问here
http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000787.html

答案 4 :(得分:0)

如果使用不透明的BitmapData,则可以使用常规十六进制数定义颜色。

var map:Bitmap = new Bitmap (new BitmapData(200,200,false))
map.bitmapData.fillRect(new Rectangle(0,0,100,100),0xFF0000)

但是如果使用透明的BitmapData,则必须使用ARGB格式:

var map:Bitmap = new Bitmap (new BitmapData(200,200))
map.bitmapData.fillRect(new Rectangle(0,0,100,100),0xFFFF0000)