Android Canvas.scale缩放
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缩放相关推荐
- Android Canvas 缩放(Scale)
Canvas 缩放(Scale) 前言:前几天用到Canvas.scale(flostsx, float sy, float px, float py)函数,研究源码后没有看懂,就去网上找资料,发现关 ...
- Android Canvas 平移、缩放、旋转的理解
自己对这个几个方法,用了好多次了,但对它们的原理概念都还是没仔细理解清楚,真是太菜了. View和canvas并不是同一个东西,可以这样想象,我们的View是固定的,相当于与一个画板或者画框,画板范围 ...
- android画布旋转,Android Canvas 平移、缩放、旋转的理解
自己用了很久对这个几个方法,用了好多次了,但对它们的原理概念都还是没仔细理解清楚,真是太菜了. View和canvas并不是同一个东西,可以这样想象,我们的View是固定的,相当于与一个画框,画框范围 ...
- Android Property Animation属性动画:scale缩放动画(4)
Android Property Animation属性动画:scale缩放动画(4) 和之前我写的附录文章1,2,3相似,本文将接着使用Android Property Animation属性 ...
- Android canvas
1.Canvas Canvas指画布,表现在屏幕上就是一块区域,可以在上面使用各种API绘制想要的东西. canvas内部维持了一个mutable Bitmap,所以它可以使用颜色值去填充整个Bitm ...
- Android自定义-滑动缩放渐变填充曲线折线图表
文章目录 自定义 一.基础操作 1.新建类 2.坐标系 3.简单的折线图 二.修饰折线图 1.折线图添加文字修饰. 三. 任意区域`可点击`的折线图 1.画布区域点击事件 1.区域点击带来的精彩 四. ...
- Android Canvas类
1. Canvas类 Canvas主要用于2D绘图,它提供了很多相应的drawXxx()方法,Canvas的获取方式有三种 重写View的onDraw(Canvas)方法 @Override prot ...
- Android Canvas.DrawText文本绘制
更新时间:2022-01-23 文章目录 1. 先来一个简单的演示效果 1)MyDrawTextView.java 2)MainActivity.java 3)activity_main.xml 2. ...
- Android Canvas总结
0x00 前言 在Android开发中,有时产品需求会要我们实现一个复杂的控件,如果控件不是常用的类型,这时候我们不得不写一个自定义的控件来实现. 自定义一个控件,目前一般通过继承View或者Surf ...
最新文章
- python学习(一)-----数据结构和算法----序列和字典的基本用法
- Django之MVC框架与MTV框架详解
- 计算机视觉工程师必读经典图书推荐
- datatable的数据进行组内排序_排序算法学习分享(四)希尔排序
- to_date , to_char
- linux更新硬件时钟,Linux内核“11分钟模式”可以做的最大的硬件时钟更新是什么?...
- mysql sycho_2005年12月23日
- Qt之QSS使用与基本语法
- python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(6)开题答辩PPT
- 使用npm安装yarn命令
- 《这样思考,人生就不一样》/《思考的整理学》 博客思听 2010年1月
- matlab 图片黑白图片,MATLAB读取黑白图像显示却是黑色,24位深转8位深黑白图像解决方法(示例代码)...
- android 跨进程通信 binder
- Python数据的输出
- Bugku:web 秋名山老司机
- 8个优秀的预训练模型,帮助您开始使用自然语言处理(NLP)
- 锐达机械对H型钢抛丸机的维修调整工作
- 织梦cms怎么上传html模板,织梦dedecms 本地模板安装图文方法
- Android OpenGLES2.0(五)——绘制立方体
- 如何通过Darkvm注册阿里云国际版?