我想绘制一个NinePatch
使用转换矩阵,因此它可以缩放,旋转,移动等所以我创建了一个继承自LibGDX的NinePatch
类和这是矩阵的责任。Libgdx的Matrix4#translate()不能正常工作
我这是怎么计算我的变换矩阵(我每次下列值的变化之一更新):
this.transform
.idt()
.translate(originX, originY, 0)
.rotate(0, 0, 1, rotation)
.scale(scale, scale, 1)
.translate(-originX, -originY, 0)
;
,我该如何使我的自定义NinePatch类:
drawConfig.begin(Mode.BATCH);
this.oldTransform.set(drawConfig.getTransformMatrix());
drawConfig.setTransformMatrix(this.transform);
this.draw(drawConfig.getBatch(), this.x, this.y, this.width, this.height); // Libgdx's NinePatch#draw()
drawConfig.setTransformMatrix(this.oldTransform);
案例1
下面是我在渲染4个9个补丁时得到的结果: 位置= 0,0 /原点= 0,0 /缩放= 0.002 /旋转=每个9patch
我得到了我期望不同。
案例2
现在相同的4组9的斑块: 位置= 0,0 /产地= 0.5,0.5 /缩放=相同/旋转=相同
你可以看到我的9个补丁不是在0,0(他们的位置)上绘制的,而是在0.5,0.5(它们的原点),就像我在计算变换矩阵时没有.translate(-originX, -originY, 0)
一样。可以肯定的是,我评论了这一指导,并且我确实得到了同样的结果。那么为什么我的第二次翻译显然不被考虑?
你是对的,除了我必须写一个不同的代码。 – Flawyte