[1]旋转 
   

public class MainActivity extends Activity {

    private float degrees;// 图片旋转的角度
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //[1]找到我们关心的控件
        ImageView iv_src = (ImageView) findViewById(R.id.iv_src);
        final ImageView iv_copy = (ImageView) findViewById(R.id.iv_copy);

        //[2] 把tomcat.png 转换成bitmap 然后显示到iv_src
        final Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.tomcat);

        //[2.1 test] 修改原图   原图不可以被修改
        //srcBitmap.setPixel(20, 30, Color.RED);

        iv_src.setImageBitmap(srcBitmap);

        new Thread(){public void run() {

            for (int i = 0; i < 100; i++) {

                degrees += 5;

                //[3]拷贝原图   

                //[3.1]创建模板
                final Bitmap copybitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), srcBitmap.getConfig());
                //[3.2]想作画 需要一个画布   以copybitmap为模板
                Canvas  canvas = new Canvas(copybitmap);
                //[3.3]创建一个画笔
                Paint paint = new Paint();
                //[3.4]开始作画   srcBitmap参考原图去画
                 Matrix matrix = new Matrix();

                 //[3.5]对图片进行旋转
                 matrix.setRotate(degrees, srcBitmap.getWidth()/2, srcBitmap.getHeight()/2);
                canvas.drawBitmap(srcBitmap,matrix, paint);

                //☆ 注意不能在子线程更新ui
                runOnUiThread(new  Runnable() {
                    public void run() {
                        //这个方法里面的逻辑一定是在主线程执行
                        //[4]把copybitmap显示到iv_copy上
                        iv_copy.setImageBitmap(copybitmap);

                    }
                });

                SystemClock.sleep(1000);

            }

        };}.start();

    }

}

  [2]缩放
    matrix.setScale(0.5f, 0.5f);

  [3]位移 
   matrix.setTranslate(20, 0);  
 
[4]倒影效果
// [3.5]对图片缩放处理
        matrix.setScale(1.0f, -1.0f);
        //让图片进行移动
        //matrix.setTranslate(0, srcBitmap.getHeight());
        //post是在上一次修改的基础上进行修改   set每次每次都是新的变化 会覆盖上一次修改
        matrix.postTranslate(0, srcBitmap.getHeight());

 [5]镜面效果

        //[3.6]镜面效果
        matrix.setScale(-1.0f, 1.0f);
        matrix.postTranslate(srcBitmap.getWidth(), 0);        
 

图形处理的api的更多相关文章

  1. PaaS 调研:GAE与 AWS(上)

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:韩伟 起因 PaaS作为"云"的概念,已经流行了很久.从使用的角度上看,似乎就是:写一个PHP,然后可以直接传到服务 ...

  2. iOS 图形处理 Core Graphics Quartz2D 教程

    Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎.它提供了低级别.轻量级.高保真度的2D渲染.该框架可以用于基于路径的 绘图.变换.颜色管理.脱屏 ...

  3. 【转】OPENGL基本API概述

    本文信息资源来源于网络,欢迎转载!转载时请保留本文链接(http://www.shopliyang.com.cn/)! OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核 ...

  4. Java—图形处理

    抽象窗口化工具(AWT)为图形用户界面编程提供API编程接口,使得Java可以提供较好的图形用户界面. AWT把图形处理分为两个层次:一是处理原始图形,这一层较原始,图形直接以点.线和面的形式画到界面 ...

  5. DirectX API 编程起步 #02 窗口的诞生

    在这篇文章里我们先用 windows API 制作一个窗口出来,以后再用 DirectX API 渲染的东西就会显示在这里,控制台那黑白的画面肯定是没法用的. 每次的代码都会更新到Github 首先贴 ...

  6. 【OpenGL游戏开发之二】OpenGL常用API

    OpenGL常用API 开发基于OpenGL的应用程序,必须先了解OpenGL的库函数.它采用C语言风格,提供大量的函数来进行图形的处理和显示.OpenGL库函数的命名方式非常有规律.所有OpenGL ...

  7. canvas图形处理和进阶用法

    前面的话 上一篇博客介绍了canvas基础用法,本文将更进一步,介绍canvas的图形处理和进阶用法 图形变换 图形变换是指用数学方法调整所绘形状的物理属性,其实质是坐标变形.所有的变换都依赖于后台的 ...

  8. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  9. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

随机推荐

  1. iOS 字典或者数组和JSON串的转换

    在和服务器交互过程中,会iOS 字典或者数组和JSON串的转换,具体互换如下: // 将字典或者数组转化为JSON串 + (NSData *)toJSONData:(id)theData { NSEr ...

  2. 23、ASP.NET MVC入门到精通——业务层和数据层父类及接口-T4模板

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在上一篇中,我们已经把项目的基本框架搭起来了,这一篇我们就来实现业务层和数据层的父接口及父类. 1.我们先来定义一个业务层父接口IBaseB ...

  3. VMware中的Ubuntu网络设置

    网络配置: VMware安装后会有两个默认网卡,分别是VMnet8(192.168.83.1)和VMnet1(192.168.19.1),当然不同的机器上,这两个网卡的 IP会不同的.在windows ...

  4. .NET LINQ 聚合操作

    聚合操作      聚合运算从值集合计算单个值. 从一个月的日温度值计算日平均温度就是聚合运算的一个示例. 方法 方法名 说明 C# 查询表达式语法 Visual Basic 查询表达式语法 更多信息 ...

  5. JUnit操作指南-批量执行单元测试(将多个测试类捆绑在一起执行)

    相关链接:https://github.com/junit-team/junit4/wiki/Aggregating-tests-in-suites

  6. JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别

    JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...

  7. 获取sql server数据库表结构

    if exists (select 1 from sysobjects where name = 'sysproperties'and xtype = 'V')begin    DROP VIEW s ...

  8. MySQL的学习--join和union的用法

    感觉工作之后一直在用框架,数据库的一些基本的东西都忘记了,这次借着这个系列的博客回顾一下旧知识,学一点新知识. 今天就先从join和union开始. join 是两张表做交连后里面条件相同的部分记录产 ...

  9. 让IE支持placeholder属性~

    原文:https://www.oschina.net/code/snippet_206691_26471#44160 让支持的直接路过,不支持的,完美显示~~ /*  * jQuery placeho ...

  10. cf------(round 2)A. Winner

    A. Winner time limit per test 1 second memory limit per test 64 megabytes input standard input outpu ...