如何设置平铺图形的大小

4

我有一个表格,应该具有棋盘格背景。为此,我使用平铺的可绘制对象,如下所示:

TiledDrawable boardBg;
boardBg = new TiledDrawable(menuSkin.getTiledDrawable("boardBg"));
boardTable.setBackground(boardBg);

那么每个图块的大小默认为可绘制对象的大小,比如64px。我该怎么做才能使每个图块变得更大?我尝试过

boardBg.setMinWidth(500);
boardBg.setMinHeight(500);

但是这并没有任何影响。
1个回答

0
TiledDrawable类不支持缩放,我创建了一个扩展TiledDrawable并可缩放的类。最好不要将其缩小超过0.1,否则会影响性能(取决于纹理的大小)。因此,在缩小时请谨慎使用。请注意,我没有考虑当比例设置为零时的情况,因此可以创建一个名为setScale的方法,在发生这种情况时抛出错误。像这样使用ScaledTiledDrawable:
ScaledTiledDrawable scaledTiledDrawable = new ScaledTiledDrawable( new TextureRegion( texture ) );
scaledTiledDrawable.getScale().set( 0.5f, 0.5f );

这是类:

public class ScaledTiledDrawable extends TiledDrawable {

    private Vector2 scale = new Vector2();
    private Affine2 transform = new Affine2();
    private Matrix4 matrix = new Matrix4();
    private Matrix4 oldMatrix = new Matrix4();

    public ScaledTiledDrawable() {

        super();
    }

    public ScaledTiledDrawable( TextureRegion region ) {

        super( region );
    }

    public ScaledTiledDrawable( TextureRegionDrawable drawable ){

        super( drawable );
    }

    public Vector2 getScale() {

        return scale;
    }

    @Override
    public void draw( Batch batch, float x, float y, float width, float height ) {

        oldMatrix.set( batch.getTransformMatrix() );
        matrix.set( transform.setToTrnScl( x, y, scale.x, scale.y ) );

        batch.setTransformMatrix( matrix );

        super.draw( batch, 0, 0, width / scale.x, height / scale.y );

        batch.setTransformMatrix( oldMatrix );
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接