美文网首页
canvas concat matrix

canvas concat matrix

作者: 六指禅 | 来源:发表于2016-11-10 17:34 被阅读242次

canvas.concat的作用可以理解成对matrix的变换应用到canvas上的所有对象.
看下面的代码.

public class ConcatMatrixActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(new ConcatMatrixView(this));
}
}
public class ConcatMatrixView extends View {
private Matrix matrix = new Matrix();
private Paint bgPaint = new Paint();

public ConcatMatrixView(Context context) {
    super(context);
    matrix.setScale(2f, 2f);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    bgPaint.setColor(Color.RED);
    canvas.drawRect(0, 0, 100, 100, bgPaint);

    canvas.save();
    canvas.concat(matrix);
    canvas.drawRect(100, 100, 200, 200, bgPaint);
    canvas.restore();

    canvas.drawRect(400, 400, 500, 500, bgPaint);
}

}
以上代码对matrix的x和y坐标都拉伸了2倍.变化的效果如下所示:

在没有concat的情况下canvas.drawRect(100, 100, 200, 200, bgPaint);是在(100, 100), (200, 200)的区域下画一个矩形.因为执行了matrix.setScale(2f, 2f)所以matrix的x和y坐标都拉伸了2倍.这时候在concat的作用下canvas.drawRect(100, 100, 200, 200, bgPaint)变成了在(200, 200), (400, 400)的区域上画矩形.
同理,如果把对matrix的变换由matrix.setScale(2f, 2f)改成matrix.setTranslate(100f, 100f),效果如下所示:

x轴和y轴坐标都移动了100个像素.

相关文章

  • canvas concat matrix

    canvas.concat的作用可以理解成对matrix的变换应用到canvas上的所有对象.看下面的代码. pu...

  • Android Matrix

    Canvas类中drawBitmap(Bitmap bitmap, Matrix matrix, Paint pa...

  • Android自定义控件

    Android中Canvas绘图基础详解 Android Paint、Canvas、Matrix使用讲解(一、Pa...

  • Android--Camera基本用法

    在我们处理canvas平移,缩放等矩阵matrix变换中,除了自己手动操作矩阵matrix外,安卓系统还提供了一个...

  • Android Matrix矩阵

    首先讲讲canvas里面的旋转、缩放、平移、 Android中可以通过Matrix和ColorMatrix对图像进...

  • 实习笔记17.07.25

    canvas和matrix 含义,用法 图像的变形处理包括:平移,旋转,缩放,错切 view事件分发复习 andr...

  • Android图片打水印

    手机端打水印(文字和图片)使用的是Bitmap、Matrix和Canvas类的一些方法, 可以实现拉伸、旋转、位移...

  • 动画

    Android中的动画主要分为补间动画、帧动画和属性动画。 1.补间动画与帧动画都是canvas对matrix的操...

  • Android 自定义View缩小图片

    Matrix matrix =new Matrix(); //Matrix绘图 Matrix提供了transla...

  • tf.concat用法浅析

    tf.concat(concat_dim, values, name='concat') 第一个参数concat_...

网友评论

      本文标题:canvas concat matrix

      本文链接:https://www.haomeiwen.com/subject/cpexpttx.html