`
wo_deqing
  • 浏览: 64219 次
文章分类
社区版块
存档分类
最新评论

android 图形变换

 
阅读更多
Android 中拥有众多的图像绘制的函数,而功能最强大的就是

drawBitmap(Bitmapbitmap,Matrixmatrix,Paintpaint)

Android官方文档的描述为Draw the bitmap using the specified matrix.翻译成中文就是:用特定的矩阵来画图。而在其中最重要的参数就是 matrix

Matrix矩阵这个东西对于数学困难的同学来说,那就是相当地困难。那么我们就不对矩阵本身进行操作。用android 提供给我们的API同样也能够做出变化的效果。那么我们就看看矩阵新手是怎么完成这一切的。

图片的导入:要使用图片必须要先导入到项目之中我们放在drawable的文件夹之中,jpg格式,名称叫做pig.jpg。然后在文件中声明变量与初始化,图片代码如下:

Bitmap bitmap;

Matrix matrix= new Matrix(); ;

Paint mPaint = new Paint();

InputStream is = getResources().openRawResource(R.drawable.pig);

bitmap = BitmapFactory.decodeStream(is);

canvas.drawBitmap(bitmap,matrix,mPaint);



查看更多精彩图片
查看更多精彩图片


图片的平移:就是设定其中心位置的变换,我们可是使用这样的两个函数做到:

setTranslate(float dx, float dy)

postTranslate(float dx, float dy)

对于矩阵变换此处的前乘和后乘我们不做过多的介绍,我们按照一种固定的变化顺序来进行变化,故全部使用后乘来解决。即全为post开头的方法,而set开头的方法是对我们已经做过的变换进行重置。好吧,实例说明一切:

matrix.setTranslate(100, 100);

canvas.drawBitmap(bitmap,matrix,mPaint);查看更多精彩图片

图片的旋转:同样的四个函数:

postRotate(float degrees)

postRotate(float degrees, float px, float py)

setRotate(float degrees)

setRotate(float degrees, float px, float py)

其中的pxpy是代表旋转的中心点的意思,如果不指定中心点的话,默认是(0,0)点进行旋转。

matrix.setTranslate(100, 100);

matrix.postRotate(90,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

canvas.drawBitmap(bitmap,matrix,mPaint);查看更多精彩图片





图片的缩放:先看看函数:

postScale(float sx, float sy)

postScale(float sx, float sy, float px, float py)

setScale(float sx, float sy, float px, float py)

setScale(float sx, float sy)

其中的参数的情况与图片旋转的情况一样,上实例:

matrix.setTranslate(100, 100);

matrix.postRotate(90,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

matrix.postScale(2,2,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

canvas.drawBitmap(bitmap,matrix,mPaint);查看更多精彩图片

图片的反转:这个情况android的API里面没有给我们直接写出,但是我们可以使用图片缩放的函数来实现。看实例吧:

matrix.setTranslate(100, 100);

matrix.postRotate(90,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

matrix.postScale(2,2,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

matrix.postScale(-1f,-1f,100+bitmap.getWidth()/2,100+bitmap.getHeight()/2);

canvas.drawBitmap(bitmap,matrix,mPaint);查看更多精彩图片

基本上通过如下的变换就可以画出想要的图像了。

分享到:
评论

相关推荐

    图形变换加载等待的源代码

    总之,这个源代码可能涵盖了Android图形变换、UI加载等待、Android Studio的使用以及良好的编程实践。通过深入研究这些代码,开发者可以学习到如何在Android平台上实现动态图形变换,优化资源加载,以及使用Android ...

    Android使用变换图形的代码例子

    在Android开发中,图形变换是实现用户界面动态效果和交互性的重要手段。本文将深入探讨如何使用Android API来实现图形的裁剪、缩放和旋转,以及如何添加动画效果。我们将主要关注`ClipDrawable`、`ScaleDrawable`和`...

    Android图形与图像处理

    Android图形系统基于层叠窗口模型,其中每个窗口都可以有自己的图形内容。主要由View和Surface组件构成,View用于绘制用户界面,Surface则作为显示内容的缓冲区。Android支持多种图形API,如Canvas、OpenGL ES、 ...

    Android下使用Matrix进行图形变换处理的Demo

    总之,Matrix是Android图形处理中的重要工具,能够实现丰富的图形变换效果。熟练掌握Matrix的使用,能极大地提升Android应用的视觉表现力。通过实践"CanvasMatrixDemo",开发者可以更直观地理解Matrix的工作原理,并...

    android中图片图形变换特效处理Demo

    本Demo从原理上说明了图片图形变换的原理,通过修改图片中每个像素点的位置来达到图片的图形变换。并且最后通过一个实现图片旗帜形状飘动Demo来说明,其中运用到了自定义View,自定义属性,数学上的三角函数正弦函数...

    Android图形系统的分析与移植

    ### Android图形系统的分析与移植 #### 1. 引言 Android作为一个全面、开放且免费的移动操作系统平台,自发布以来一直是业界关注的焦点。它以其出色的可移植性及强大的功能,在嵌入式设备领域展现出强劲的发展势头...

    Android 图形系统的分析与移植

    ### Android 图形系统的...通过以上分析可以看出,Android图形系统的设计充分考虑了性能和效率的需求,利用Skia和OpenGL/ES等库实现了高效的图形处理能力。这对于提升用户体验、推动Android平台的发展具有重要意义。

    Android图像处理之图形特效处理

    在本讨论中,我们将深入探讨Android图像处理中的图形特效处理,主要围绕`AndroidMatrix`类,它是Android系统中用于执行2D图形变换的核心工具。 `AndroidMatrix`是Android SDK提供的一种机制,用于处理2D图形的矩阵...

    图形学—C++ 透视投影变换

    【图形学—C++ 透视投影变换】 透视投影在计算机图形学中是一种模拟真实世界视觉效果的方法,它根据物体与观察者之间的相对位置和距离,将三维物体映射到二维平面上,形成近大远小的视觉效果。C++作为编程语言,常...

    android2D图形绘制

    在Android平台上,2D图形绘制是一项基础且重要的技术,它允许开发者创建丰富的用户界面和动态效果。本主题将深入探讨Android 2D图形绘制的核心概念、API和实践技巧。 首先,Android提供了两种主要的方式来实现2D...

    android 关于图像旋转变换的解释

    在Android开发中,图形变换是一种常见的需求,尤其是在处理图像的动态效果时。本文将深入探讨Android中的图像旋转变换,包括旋转的基本原理、实现方式以及相关的Matrix操作。 #### 二、Matrix与图像变换 在Android...

    android各种图形画图

    以下是一些关于Android图形画图的关键知识点: 1. **Canvas与Paint**: - `Canvas`是Android中用于在Bitmap或屏幕表面绘制的基本类。它提供了多种绘图方法,如`drawRect()`, `drawCircle()`, `drawText()`等。 - ...

    Android图形图像处理技术的研究综述.pdf

    《Android图形图像处理技术的研究综述》 随着4G技术为代表的移动互联网时代飞速发展,Android系统已成为全球最受欢迎的移动终端应用平台。图形图像处理在Android系统中的地位尤为重要,尤其在游戏开发中不可或缺。...

    android 3d图形绘制

    在现代移动应用开发领域,Android平台已经成为一个重要的角色,特别是在3D图形的绘制方面,其技术发展已经达到了一个相当高的水平。利用OpenGL库,开发者可以在Android平台上实现复杂的三维图形绘制,这不仅拓展了...

    Android大作业.zip

    1. **Android图形系统**:Android提供了多种绘制图形的方法,如Canvas、Paint和Path等。Canvas用于绘制,Paint定义颜色和样式,Path定义形状路径。 2. **坐标系统和变换矩阵**:在Android中,图形的变换通常通过...

    android 3D游戏开发技术宝典-opengl ES2.0的第5章 投影及各种变换

    在Android 3D游戏开发中,OpenGL ES 2.0是一个关键的图形库,用于创建复杂的3D场景和游戏。本章重点讨论了投影和各种变换技术,这些都是3D渲染的基础,对于理解游戏中的物体定位、相机视角以及场景互动至关重要。 1...

    Android 图形解锁源码-IT计算机-毕业设计.zip

    这个“Android图形解锁源码”是一个毕业设计项目,旨在帮助学生深入理解Android应用的开发流程,并且专注于安全和用户体验方面的实践。 首先,我们要了解图形解锁的核心机制。它基于一个9宫格的界面,用户在屏幕上...

    Android图形优化

    Android图形优化是一个涉及多个层面和步骤的复杂过程,它需要开发者对Android的图形渲染管线、界面渲染原理以及性能瓶颈有深入的理解。本文旨在探讨Android界面优化中的关键知识点,结合Google工程师Chet Haase和...

Global site tag (gtag.js) - Google Analytics