lufy's legend

标题: 纹理问题,请大侠指导 [打印本页]

作者: zzz220918    时间: 2018-9-21 06:39
标题: 纹理问题,请大侠指导
我想加载一张图片,该图片是300*300的,但是我想让它缩放到100*100的矩形里面,LBitmapData(imglist["face1"],0,0,100,100),这样的图片数据是没有缩放的,要怎么样才可以缩放?
因为我要用半径为50的圆来显示这张图片,所要以用到纹理
原图是这个 wx.png
如果是这样:cLayer = new LSprite();
backLayer.addChild(cLayer);
bitmap = new LBitmapData(imglist["face1"],0,0,100,100);
cLayer.graphics.beginBitmapFill(bitmap);
cLayer.graphics.drawArc(4,"#ff0000",[50,50,50,0,2*Math.PI]);
效果是这样: 1.png

如果是这样;
cLayer = new LSprite();
backLayer.addChild(cLayer);
bitmap = new LBitmap(new LBitmapData(imglist["face1"],0,0));
bitmap.scaleX = 100 / bitmap.width;
bitmap.scaleY = 100 / bitmap.height;
cLayer.graphics.beginBitmapFill(bitmap.bitmapData);cLayer.graphics.drawArc(4,"#ff0000",[50,50,50,0,2*Math.PI]);

也是上面的效果,请问怎么样才可以把一个原图的BitmapData变成缩放后的BitmapData呢?

作者: zzz220918    时间: 2018-9-21 17:15
问题解决了,我还写了一个函数,可以用这个方式给所有的形状贴图,附上代码

function circleImage(image,r){
    layerCircle = new LSprite();
    var bitmap = new LBitmap(new LBitmapData(image,0,0));
    bitmap.scaleX = r * 2 / bitmap.width
    bitmap.scaleY = r * 2 / bitmap.height
    var bitmapData = new LBitmapData(null, 0, 0,r * 2,r * 2);
    bitmapData.draw(bitmap);
    layerCircle.graphics.beginBitmapFill(bitmapData);
    layerCircle.graphics.drawArc(1,"#ff0000",[r,r,r,0,2*Math.PI]);
    layerCircle.addChild(bitmapData);
    return layerCircle
  }
作者: lufy    时间: 2018-10-2 05:36
zzz220918 发表于 2018-9-21 17:15
问题解决了,我还写了一个函数,可以用这个方式给所有的形状贴图,附上代码

function circleImage(image,r ...

不好意思,最近没怎么上论坛,
还有一种方法,就是用mask,比你上面的方法会更简单一点




欢迎光临 lufy's legend (http://lufylegend.com/forum/) Powered by Discuz! X2.5