gpt4 book ai didi

actionscript-3 - AS3 Blitting - 复制像素获取一些源图像

转载 作者:行者123 更新时间:2023-12-04 06:45:09 24 4
gpt4 key购买 nike

我正在尝试在屏幕上绘制一些东西,然后将其复制到舞台上的位图上。

我以前做过这个,使用程序绘制的形状,如圆形,但是当我使用库项目时,大部分源像素都被切断了。

这是我的代码 - 在另一个函数中,位图对象被添加到舞台上,我可以看到 copyPixels 有效,但正如我所说,它只复制了一些像素。我试过使用 Rectangle,但到目前为止运气不好。

var s:StarAsset = new StarAsset();

s.x = e.stageX;
s.y = e.stageY;
s.scaleX = e.pressure * 10;
s.scaleY = e.pressure * 10;
s.rotation = Math.random() * 360;



var bms:BitmapData = new BitmapData(s.width + 6, s.height + 6, true, 0x00000000);
bms.draw(s);

var srect:Rectangle = new Rectangle();
srect.width = s.width + 6;
srect.height = s.height + 6;

var destpoint:Point = new Point(s.x, s.y);
bmcontainer.copyPixels(bms, srect, destpoint, null, null, true);

最佳答案

使用明星 Assets :

star-asset

假设您正在向舞台上的 Canvas 位图传输:

var canvas:BitmapData = new BitmapData(600, 600, true, 0x0);
var bitmap:Bitmap = new Bitmap(canvas, PixelSnapping.AUTO, true);
addChild(bitmap);

此实现将实例化您的 StarAsset,将其绘制到 BitmapData,然后随机变换绘制到 Canvas 的每个副本的比例、位置和旋转:

makeStars();

function makeStars():void
{
// get the star asset
var s:StarAsset = new StarAsset();

// copy star asset to bitmap data
var bd:BitmapData = new BitmapData(s.width, s.height, true, 0x0);
bd.draw(s);

// draw 100 variants on BitmapData
for(var i:uint = 0; i < 100; i++)
{
var positionX:Number = Math.random() * 600;
var positionY:Number = Math.random() * 600;
var scale:Number = Math.random();
var angle:Number = Math.random() * 360;

var matrix:Matrix = new Matrix();
matrix.scale(scale, scale);
matrix.rotate(angle * Math.PI / 180);
matrix.translate(positionX, positionY);

canvas.draw(bd, matrix, null, null, null, true);
}
}

产生:

stars

或者这里画了 1000 颗星星:

stars-1000

或者最后画出10000颗星星:

stars-10000

关于actionscript-3 - AS3 Blitting - 复制像素获取一些源图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com