上一篇已经介绍了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;
}
}
}
代码中都有具体实例,大家自己看哦,有什么不清楚的能解答都帮大家解答
分享到:
相关推荐
C#中Bitmap类实现对图像操作的一些方法
Android—BitMap与Canvas学习笔记
Displaying a large bitmap file on a dialog box, in its original size, is quite difficult in the VC++ environment. However, it is possible to display a large bitmap to a predefined area of the dialog ...
bmp format file from 24 bitmap to 8 bitmap
Android UI开发(五)Bitmap和Canvas实例.docxAndroid UI开发(五)Bitmap和Canvas实例.docxAndroid UI开发(五)Bitmap和Canvas实例.docxAndroid UI开发(五)Bitmap和Canvas实例.docxAndroid UI开发(五)Bitmap和Canvas实例...
本项目是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不存在了,请在代码中修改图片路径...
位图装换工具,可以.bmp图片转化为.c文件
VC++ animated_bitmap_button 动画按钮制作实例,是用一连串BMP位图实现的动画效果的窗体按钮,这些位图是在一张图上,通过VC++的特殊处理形成动画效果,如测试图所示,实现了一个旋转的地球和飘扬的国旗动画,鼠标...
主要介绍了 Android canvas drawBitmap方法详解及实例的相关资料,需要的朋友可以参考下
android里面 canvas 转换成bitmap
vc++保存位图的实例文档,讲解vc++下位图保存的基本操作
本项目是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不存在了,请在代码中修改图片路径...
VC6环境下的高质量图片旋转例程,包含所有工程文件
bitmap绘图,添加文字,bitmap旋转,缩放,添加水印,水印随原图旋转的时候位置有点问题。
在Android UI开发专题的前五节我们讲到的东西主要是基础和理论内容,从本次Android123将通过实例代码来演示,本次主要是Bitmap和Canvas类的使用,根据要求缩放Bitmap对象并返回新的Bitmap对象。centerToFit方法一共...
本程序可以打开bmp,jpg格式的图片(如需其他格式,可修改代码);并可以对图片的某个位置做标记,比如标记景物的距离等,然后可以把图片保存到磁盘中。 默认的保存路径与源图片文件相同,保存的名称为 源文件名称+_...
图片旋转缩放加盖水印透明倾斜扭曲处理是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不...
Arduino和TFTLCD液晶显示屏的连接库文件
本文实例讲述了Android开发之图片旋转功能实现方法。分享给大家供大家参考,具体如下: 在Android中进行图像旋转需要使用Matrix,它包含了一个3*3的矩阵,专门用于进行图像变换匹配。Matrix ,中文里叫矩阵,高等...
LCD显示或热敏打印时使用到Bitmap字体,部分字体需要90度旋转。