Android30

Canvas.scale方法

1)方法1

将x轴、y轴进行缩放

public void scale(float sx, float sy) {if (sx == 1.0f && sy == 1.0f) return;nScale(mNativeCanvasWrapper, sx, sy);
}

2)方法2

以(px,py)点为基准点,进行缩放,而不是坐标原点(0,0)

public final void scale(float sx, float sy, float px, float py) {if (sx == 1.0f && sy == 1.0f) return;translate(px, py);scale(sx, sy);translate(-px, -py);
}

演示

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;public class MyScaleView extends View {public MyScaleView(Context context) {super(context);}public MyScaleView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}public MyScaleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.save();Paint mPaint = new Paint();mPaint.setColor(Color.BLUE);canvas.drawRect(0, 0, 300, 300, mPaint); // 绘制300 * 300的矩形canvas.scale(0.5f, 0.5f); // 进行缩小一般mPaint.setColor(Color.GRAY);canvas.drawRect(0, 0, 300, 300, mPaint); // 缩放后,绘制150 * 150的矩形canvas.restore();canvas.scale(0.5f, 0.5f, 300, 300); // 以坐标(300, 300)为基准缩小一半mPaint.setColor(Color.RED);canvas.drawRect(0, 0, 300, 300, mPaint); // 缩放后,绘制150 * 150的矩形}
}

代码

代码:地址

参考文档

Android Developers 中描述的 Canvas.scale 方法,参考文档:地址

Android Canvas.scale缩放相关推荐

  1. Android Canvas 缩放(Scale)

    Canvas 缩放(Scale) 前言:前几天用到Canvas.scale(flostsx, float sy, float px, float py)函数,研究源码后没有看懂,就去网上找资料,发现关 ...

  2. Android Canvas 平移、缩放、旋转的理解

    自己对这个几个方法,用了好多次了,但对它们的原理概念都还是没仔细理解清楚,真是太菜了. View和canvas并不是同一个东西,可以这样想象,我们的View是固定的,相当于与一个画板或者画框,画板范围 ...

  3. android画布旋转,Android Canvas 平移、缩放、旋转的理解

    自己用了很久对这个几个方法,用了好多次了,但对它们的原理概念都还是没仔细理解清楚,真是太菜了. View和canvas并不是同一个东西,可以这样想象,我们的View是固定的,相当于与一个画框,画框范围 ...

  4. Android Property Animation属性动画:scale缩放动画(4)

     Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...

  5. Android canvas

    1.Canvas Canvas指画布,表现在屏幕上就是一块区域,可以在上面使用各种API绘制想要的东西. canvas内部维持了一个mutable Bitmap,所以它可以使用颜色值去填充整个Bitm ...

  6. Android自定义-滑动缩放渐变填充曲线折线图表

    文章目录 自定义 一.基础操作 1.新建类 2.坐标系 3.简单的折线图 二.修饰折线图 1.折线图添加文字修饰. 三. 任意区域`可点击`的折线图 1.画布区域点击事件 1.区域点击带来的精彩 四. ...

  7. Android Canvas类

    1. Canvas类 Canvas主要用于2D绘图,它提供了很多相应的drawXxx()方法,Canvas的获取方式有三种 重写View的onDraw(Canvas)方法 @Override prot ...

  8. Android Canvas.DrawText文本绘制

    更新时间:2022-01-23 文章目录 1. 先来一个简单的演示效果 1)MyDrawTextView.java 2)MainActivity.java 3)activity_main.xml 2. ...

  9. Android Canvas总结

    0x00 前言 在Android开发中,有时产品需求会要我们实现一个复杂的控件,如果控件不是常用的类型,这时候我们不得不写一个自定义的控件来实现. 自定义一个控件,目前一般通过继承View或者Surf ...

最新文章

  1. python学习(一)-----数据结构和算法----序列和字典的基本用法
  2. Django之MVC框架与MTV框架详解
  3. 计算机视觉工程师必读经典图书推荐
  4. datatable的数据进行组内排序_排序算法学习分享(四)希尔排序
  5. to_date , to_char
  6. linux更新硬件时钟,Linux内核“11分钟模式”可以做的最大的硬件时钟更新是什么?...
  7. mysql sycho_2005年12月23日
  8. Qt之QSS使用与基本语法
  9. python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(6)开题答辩PPT
  10. 使用npm安装yarn命令
  11. 《这样思考,人生就不一样》/《思考的整理学》 博客思听 2010年1月
  12. matlab 图片黑白图片,MATLAB读取黑白图像显示却是黑色,24位深转8位深黑白图像解决方法(示例代码)...
  13. android 跨进程通信 binder
  14. Python数据的输出
  15. Bugku:web 秋名山老司机
  16. 8个优秀的预训练模型,帮助您开始使用自然语言处理(NLP)
  17. 锐达机械对H型钢抛丸机的维修调整工作
  18. 织梦cms怎么上传html模板,织梦dedecms 本地模板安装图文方法
  19. Android OpenGLES2.0(五)——绘制立方体
  20. 如何通过Darkvm注册阿里云国际版?

热门文章

  1. visibility 和 display 的区别
  2. duplicate复制数据库(rac-单实例)
  3. python接外包项目_微信外包项目,接口开发流程小记
  4. Artemis集群(18)
  5. 我确实不知道如何使用计算机翻译,新视野大学英语4课后翻译
  6. request.getPathInfo() 方法的作用
  7. linux安装python3
  8. Python开发(基础):列表List
  9. 神经网络 深度神经网络,深度神经网络训练
  10. 谷歌学术403:某URL没有权限访问