上一篇已经介绍了Android种Bitmap和Canvas的使用,以下我们来写一个详细实例

http://blog.csdn.net/zhaoyazhi2129/article/details/32136179

执行效果:

主要代码

package com.example.guaguale;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.Log;
import android.view.View; public class CanvaDemoActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(new CustomView(this)); } /**
* 使用内部类 自己定义一个简单的View
*
* @author zhaoyazhi
*
* 2014-6-18
*/
class CustomView extends View { public CustomView(Context context) {
super(context); } // 在这里我们将測试canvas提供的绘制图形方法
@Override
protected void onDraw(Canvas canvas) {
drawBitmap(canvas);
drawBitmapPostScale(canvas);
drapBitmapPostRotate(canvas);
shuiyinBitmap(canvas);
} /**
* 在canvas放置图片
*
* @param canvas
*/
private void drawBitmap(Canvas canvas) {
// 获取图片资源
Bitmap bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.e);
// 将图片加入到canvas
canvas.drawBitmap(bmp, 0, 0, null);
} /**
* 缩放图片
*
* @param canvas
*/
private void drawBitmapPostScale(Canvas canvas) {
// 获取图片资源
Bitmap bmp1 = BitmapFactory.decodeResource(getResources(),
R.drawable.e);
// Matrix类进行图片处理(缩小或者旋转)
Matrix matrix = new Matrix();
// 缩小一倍
matrix.postScale(0.5f, 0.5f);
// 生成新的图片
Bitmap dstbmp = Bitmap.createBitmap(bmp1, 0, 0, bmp1.getWidth(),
bmp1.getHeight(), matrix, true);
// 加入到canvas
canvas.drawBitmap(dstbmp, 200, 0, null);
} /**
* 旋转图片
*
* @param canvas
*/
private void drapBitmapPostRotate(Canvas canvas) {
// 获取图片资源
Bitmap bmp2 = BitmapFactory.decodeResource(getResources(),
R.drawable.e);
// Matrix类进行图片处理(缩小或者旋转)
Matrix matrix1 = new Matrix();
// 缩小
matrix1.postScale(0.8f, 0.8f);
// 旋转
matrix1.postRotate(45);
// 生成新的图片
Bitmap dstbmp1 = Bitmap.createBitmap(bmp2, 0, 0, bmp2.getWidth(),
bmp2.getHeight(), matrix1, true);
// 加入到canvas
canvas.drawBitmap(dstbmp1, 130, 100, null);
} /**
* 加水印图片
*
* @param canvas
*/
private void shuiyinBitmap(Canvas canvas) {
Bitmap bmp = createBitmap(
BitmapFactory.decodeResource(getResources(), R.drawable.e),
BitmapFactory.decodeResource(getResources(), R.drawable.c));
canvas.drawBitmap(bmp, 10, 200, null);
} // 图片加入水印处理
private Bitmap createBitmap(Bitmap src, Bitmap watermark) {
String tag = "createBitmap";
Log.d(tag, "create a new bitmap");
if (src == null) {
return null;
} int w = src.getWidth();
int h = src.getHeight();
int ww = watermark.getWidth();
int wh = watermark.getHeight();
// create the new blank bitmap
Bitmap newb = Bitmap.createBitmap(w, h, Config.ARGB_8888);// 创建一个新的和SRC长度宽度一样的位图
Canvas cv = new Canvas(newb);
// draw src into
cv.drawBitmap(src, 0, 0, null);// 在 0,0坐标開始画入src
// draw watermark into
cv.drawBitmap(watermark, w - ww + 5, h - wh + 5, null);// 在src的右下角画入水印
// save all clip
cv.save(Canvas.ALL_SAVE_FLAG);// 保存
// store
cv.restore();// 存储
return newb;
}
} }

代码中都有详细实例,大家自己看哦,有什么不清楚的能解答都帮大家解答

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印的更多相关文章

  1. 赵雅智_使用SQLiteDatabase操作SQLite数据库及事务

    知识点具体解释:http://blog.csdn.net/zhaoyazhi2129/article/details/9025995 详细代码: MainActivity.java package c ...

  2. 赵雅智:android教学大纲

    带下划线为详细内容链接地址.点击后可跳转.希望给大家尽一些微薄之力.眼下还在整理中 教学章节 教学内容 学时安排 备注 1 Android高速入门 2 Android模拟器与常见命令 3 Androi ...

  3. 赵雅智_Android编码规范

    凝视 导入mycodetemplates.xml统一凝视样式 须要加凝视的地方 类凝视(必加) 方法凝视(必加) 块凝视主要是数据结构和算法的描写叙述(必加) 类成员变量和常量凝视(选择性加入) 单行 ...

  4. 赵雅智_Android案例_刮刮乐

    实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  5. 赵雅智_Swift(4)_断言

    可选能够让你推断值是否存在.你能够在代码中优雅地处理值缺失的情况.然而,在某些情况下,假设值缺失或者值并不满足特定的条件.你的代码可能并不须要继续执行.这时.你能够在你的代码中触发一个断言(asser ...

  6. 赵雅智_Android的getResources()资源引用

    今天做一个Android的刮刮乐项目.里面用到非常多的地方用到了getResources. <span style="font-size:12px;"> // 获得图片 ...

  7. 赵雅智_Swift(1)_swift简单介绍及类型

    Swift 是 iOS 和 OS X 应用开发的一门新语言. 假设你有 C 或者 Objective-C 开发经验, Swift 的非常多内容都是你熟悉的. Swift 的类型是在 C 和 Objec ...

  8. 赵雅智_android_frame动画

    在開始实例解说之前,先引用官方文档中的一段话: Frame动画是一系列图片依照一定的顺序展示的过程,和放电影的机制非常相似.我们称为逐帧动画.Frame动画能够被定义在XML文件里,也能够全然编码实现 ...

  9. 赵雅智_ContentProvider

    ContentProvider介绍 ContentProvider是不同应用程序之间进行交换数据的标志API 也就是说:一个应用程序通过ContentProvider暴露自己的数据操作接口,那么无论该 ...

随机推荐

  1. Linux下编译,安装Apache httpd服务器

    环境:ubuntu 16.0.4 Apache官网下载Apache httpd压缩包:httpd-2.4.27.tar.gz,安装之前请确定安装了make工具,我安装的是GNU make 解压文件 s ...

  2. 简洁的MVC思想框架——Nancy(Session的使用)

    前文提到关于Nancy中GET和POST以及外部引用图片,css和JS的文件等操作.今天所讲的是Nancy关于Session相关操作. Session作为web开发中极其重要的一部分,而Nancy中S ...

  3. LightOJ-1236 Pairs Forming LCM 唯一分解定理

    题目链接:https://cn.vjudge.net/problem/LightOJ-1236 题意 给一整数n,求有多少对a和b(a<=b),使lcm(a, b)=n 注意数据范围n<= ...

  4. 3、Python字典集合

    2.3字典 字典是键值对的无序可变序列.键值之间用冒号隔开,相邻元素之间用逗号隔开,所有元素放在大括号之间{},键可以是Python中所有不可变的数据,不能用列表.元组.字典作为字典的键,键不可重复, ...

  5. Git(三):加入与提交

     在这一节.接着使用上一节的代码样例往下讲,http://blog.csdn.net/troy__/article/details/39806245. 加入文件到暂存区      加入新文件和改动版本 ...

  6. WET Dilutes Performance Bottlenecks

    WET Dilutes Performance Bottlenecks Kirk Pepperdine THE IMPORTANCE OF THE DRY PRINCIPLE (Don't Repea ...

  7. 各大CMS系统优缺点(2017)

    各大CMS系统优缺点(2017) 总结 WordPress之前用过,可能需要再完整的用一个才会比较了解. 从2015年各行业建站规模来看,还有一大批人想自己搭建网站,下面为大家盘点一下比较实用CMS系 ...

  8. [SDOI2010] 古代猪文 (快速幂+中国剩余定理+欧拉定理+卢卡斯定理) 解题报告

    题目链接:https://www.luogu.org/problemnew/show/P2480 题目背景 “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色 ...

  9. C++字节对齐与结构体大小计算

    转载注明出处:http://pppboy.blog.163.com/blog/static/30203796201082494026399/ 感谢原创博主的辛勤成果. 说明: 结构体的sizeof值, ...

  10. 配置ssh免密码登录的原理