小编hpe*_*pet的帖子

矩阵镜和刻度

我正在播放一些动画,其中所有帧都是相同的高度,但宽度不同.好吧,但我想使用矩阵应用一些转换以获得更好的性能.

在第一帧:

  • 我随机决定是否要应用镜像矩阵
  • 我测量高度,看看是否需要应用缩小矩阵.

下面是几乎可以工作的代码.不知怎的,它不一致,框架有时居中,有时偏移.我没有矩阵经验,所以如果有更多知识的人可以确认/修复/改进转换程序,我将不胜感激.该矩阵提供给画布绘制方法.

另外我想控制:

  • 如果需要缩小比例缩小到精确高度(高度是我唯一的方向值)
  • 可以使用矩阵,以便所有帧都以底部中心绘制?

编辑:我想我可以用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 != …
Run Code Online (Sandbox Code Playgroud)

android canvas matrix scale

3
推荐指数
1
解决办法
2073
查看次数

标签 统计

android ×1

canvas ×1

matrix ×1

scale ×1