Android之matrix类控制图片的旋转、缩放、移动

在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型:

1、Translate————平移变换

2、Scale————缩放变换

3、Rotate————旋转变换

4、Skew————错切变换

在Android的API里对于每一种变换都提供了三种操作方式:set(用于设置Matrix中的值)、post(后乘,根据矩阵的原理,相当于左乘)、pre(先乘,相当于矩阵中的右乘)。默认时,这四种变换都是围绕(0,0)点变换的,当然可以自定义围绕的中心点,通常围绕中心点。

首先说说平移,在对图片处理的过程中,最常用的就是对图片进行平移操作,该方法为setTranslate(),平移意味着在x轴和y轴上简单地移动图像。setTranslate方法采用两个浮点数作为参数,表示在每个轴上移动的数量。第一个参数是图像将在x轴上移动的数量,而第二个参数是图像将在y轴上移动的数量。在x轴上使用正数进行平移将向右移动图像,而使用负数将向左移动图像。在y轴上使用正数进行平移将向下移动图像,而使用负数将向上移动图像。

再看缩放,Matrix类中另一个有用的方法是setScale方法。它采用两个浮点数作为参数,分别表示在每个轴上所产生的缩放量。第一个参数是x轴的缩放比例,而第二个参数是y轴的缩放比例。如:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295795.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

史上最难逻辑题!据说99.9%的人都做不出来……

全世界只有3.14 % 的人关注了爆炸吧知识非常「逻辑」撩人于无形普林斯顿大学博士生 Raymond Smullyan 是一位非常厉害逻辑高手。在Smullyan与他非常迷恋的女音乐家的第一次约会上,他用了一招意想不到“逻辑”方法,撩她于无形。他说道:“我们来…

中科大计算机博士毕业条件,中国科技大学博士和硕士研究生毕业要求.doc

中国科技大学博士和硕士研究生毕业要求中国科学技术大学研究生学习培养过程要求研究生院、校学位办2011年4月目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc291147553" 关于博士学位标准修订的指导原则 PAGEREF _Toc291147553 \h 1 HYPERLINK \l "_…

手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序

注意:文章中提到的命令行工具即是Windows Terminal/PowerShell/cmd其中的一个,推荐使用Windows Terminal运行命令行工具的时候建议以管理员身份,避免踩坑为了保证操作顺畅,建议使用PowerShell先执行一下set-ExecutionPolicy Remot…

[转]了解ASP.NET MVC几种ActionResult的本质:EmptyResult ContentResult

本文转自:http://www.cnblogs.com/artech/archive/2012/08/13/action-result-01.html 定义在Controller中的Action方法大都返回一个ActionResult对象。ActionResult是对Action执行结果的封装,用于最终对请求进行响应。ASP.NET MVC提供了一系列的ActionRe…

Android之Animation动画的介绍及用法

Android SDK介绍了2种Animation: Tween Animation(渐变动画):通过对特定的对象做图像变换如平移、缩放、旋转、淡出/淡入等产生动画效果 Frame Animation(帧动画):创建一个Drawable序列,这些Drawable可以按照指定的时间间隔一个一个的显示,也就是顺序播放事先做好的图像…

怎样判断ios app 第一次启动

我已经看到这个问题很多次了。今天抽空研究了一下 首次运行的应用程序加入一些help 或者 宣传动画 现在变的很重要了。 一个有用的例子是发送一个分析实例。这可能是一个很好的方法来确定有多少人下载实用应用程序。有人会说:“但是,嘿,苹果A…

华为nova6计算机在哪,华为nova6开发者选项在哪

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。打开华为nova6开发者选项的步骤是:1、首先进入手机桌面,点击设置。2、点击关于手机。3、连续点击版本号7次,输入锁屏密码,点击返回。4…

他是发明声呐的物理天才,被妻子家暴后出轨守寡的师母,爱因斯坦却公开支持.........

全世界只有3.14 % 的人关注了爆炸吧知识情不知所起一往而深1911年11月4日,巴黎新闻报的头版头条标题是《爱情故事:居里夫人与朗之万教授》。报纸一出,顷刻售罄;巴黎上下,满城“风流”。#寡妇科学家“乱伦”相差半旬已婚…

如何在 .NET Core 中获取 CPU 使用率

这篇文章我们分享一种如何在 .NETCore 中获取 CPU使用率的方法, 它所报告的这个值和 任务管理器 中报告的 CPU 使用值 差不多是一致的。在 .NET Framework 中,很多人会用 PerformanceCounter 类做这件事情,参考如下代码:public class Program…

uml 类图聚合与组合

聚合 聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享&#xf…

Android之ViewPager使用(用美女做的背景,给你疲惫的眼睛视觉冲击)

ViewPager的使用 我们先爆照,来点视觉冲击,其它的ViewPager弱爆了 照片看完了,接来下我们就来实现,just do it 第一步 你的项目需要有android-support-v4.jar的包,你懂的,有了才会支持ViewPager 第二步 看下项目的结构图片

深入探讨用位掩码代替分支(8):SSE指令集速度测试

在上一篇测试了MMX指令集,这次我们来测试SSE指令集。说的更精确一点,是测试SSE2指令集。  本篇致力于解决以下问题——1.SSE/SSE2指令集是什么?2.如何阅读Intel/AMD的手册?3.如何运用SSE指令集?如何将MMX代码升级为S…

mysql字段简索引_MySQL优化看这一篇就够了

本文概要概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的…

centos 7 安装openstack kilo in three node

教程请参考官方教程只是罗列了一些遇到的问题与解决方法1.keystone 无法启动可以先执行以下操作# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone# chown -R keystone:keystone /var/log/keystone# chown -R keystone:keystone /etc/keystone/…

计算机老师开场白试讲视频,教师招考试讲模版之开场白

除了说课外,很多地区也会选用试讲作为面试形式,很多同学笔试过了在准备面试的时候容易忽视开场白的作用,其实,给听课者留下一个好的初始印象十分重要。大家在评阅文章时常常听到的一种手法就是开门见山,这是写文章的一…

.NET 6 Talk Party 2|.NET Core 与行业

关注我们微软 Reactor 为帮助广开发者,技术爱好者,更好的学习 .NET Core, C#, Python,数据科学,机器学习,AI,区块链, IoT 等技术,将每周三到周六,组织 3~5 场线上分享活动。欢迎跟着…

施一公:中国还缺乏真正的世界顶尖大学,研究生该听听这些建议

全世界只有3.14 % 的人关注了爆炸吧知识“中国的科技发展很快,变得很大,但还不够强;中国的人才众多,变得很大,但还不够强。中国是一个高等教育大国,但从权威的世界大学排名来看,中国缺乏真正的世…

Android之Fragment 真正的完全解析(上)

转载出处:http://blog.csdn.net/lmj623565791/article/details/37970961 自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~ 本篇博客力求…

第零讲.1 tapestry项目创建与运行

2019独角兽企业重金招聘Python工程师标准>>> 1、在eclipse工程目录下创建项目: 第一次运行eclipse的时候会弹出选择工程项目存放地点,如我的存放路径D:\workspace。我们就把tapestry创建的项目放到这个目录方便统一管理。 打开系统的命令提示…

阿里云-数据盘挂载

2019独角兽企业重金招聘Python工程师标准>>> 硬盘分区及挂载操作步骤: 1. 查看未挂载的硬盘(名称为/dev/xvdb) # fdisk -l Disk /dev/xvdb doesnt contain a valid partition table 2. 创建分区 # fdisk /dev/xvdb ... 输入n Comm…