3
我在播放一些動畫,其中所有幀的高度相同,但寬度不同。一切順利,但我想要使用矩陣進行一些轉換以獲得更好的性能。矩陣鏡和比例尺
在第一幀:
- 我隨機決定,如果我想申請鏡矩陣
- 我測量身高,看看我是否需要申請規模縮小的矩陣。
下面是幾乎可以工作的代碼。不知何故,它不一致,幀有時居中,有時偏移。我沒有矩陣經驗,所以如果有更多知識的人可以確認/修正/改進轉換程序,我將不勝感激。這個矩陣被提供給畫布繪製方法。
此外,我想控制:
- 如果縮小需要規模下降到確切的高度(身高是我唯一的方向值)
- 可以矩陣來使用,使所有的幀將繪製底部中心?
編輯:我想我可以通過screenRect(目標矩形)控制精確縮小尺寸和底部中心位置?
基本精簡代碼:
RectF screenRect = new RectF(0, 0, ((float) displayWith), ((float) displayHeight));
Matrix mirror = null;
if (isMirror) {
mirror = new Matrix();
mirror.setScale(-1, 1);
mirror.postTranslate(p.x, 0); // position X back to original point
}
Matrix scale = null;
if (isScaleDown) { // down-scale
scale = new Matrix();
scale.setRectToRect(imageRect, screenRect, Matrix.ScaleToFit.CENTER);
}
// COMBINED TRANSFORMATION MATRIX
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Matrix trans = null;
if (scale != null) trans = scale;
if (mirror != null && trans == null) trans = mirror;
if (mirror != null && trans != null) trans.setConcat(trans, mirror);
return trans;