【Android开发】图形图像处理技术-使用BitmapShader渲染图像

在Android中,提供的BitmapFactory类主要用来渲染图像。如果需要将一张图片裁剪成椭圆形或圆形等形状并显示到屏幕上,就可以使用BitmapShader类来实现。使用BitmapShader来渲染图像的基本步骤如下:

1.创建BitmapShader类的对象,可以通过一下构造方法进行创建
BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY)
其中,参数bitmap用于指定一个位图对象,通常是要用来渲染的原图像:参数tileX用于指定在水平方向上图像的重复方式;参数tileY用于指定在竖直方向上图像的重复方式。
例如,要创建一个在水平方向重复,在竖直方向镜像的BitmapShader对象,可以使用下面的代码:
BitmapShader bitmapShader=new BitmapShader(bitmap_bg,TileMode.REPEAT,TileMode.MIRROR);
(Shader.TileMode类型的参数包括CLAMP、MIRROR和REPEAT3个可选值,其中,CLAMP为使用
边界颜色来填充剩余的空间;MIRROR为采用镜像方式;REPEAT为采用重复方式)

2.通过Paint的setShader方法来设置渲染对象。
3.在绘制图像时,使用已经设置了setShader()方法的画笔

下面通过一个实例来说明如何使用BitmapShader渲染图像
具体实现:
用来显示自定义的绘图类的布局文件
res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/frameLayout1"
    android:orientation="vertical"
    >

</FrameLayout>

打开MainActivity,在文件中创建名为MyView的内部类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,在里面进行作图:

在onDraw(Canvas canvas)方法中,首先定义一个画笔,并设置其使用抗锯齿功能,然后应用BitmapShader实现平铺的画笔背景,这里使用的是一张机器人图片,接下来绘制一张椭圆形的图片
MainActivity:

package com.example.test;  

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Shader.TileMode;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;

public class MainActivity extends Activity {  

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

      //获取布局文件中添加的帧布局管理器
        FrameLayout fl=(FrameLayout)findViewById(R.id.frameLayout1);
        //将自定义的MyView视图添加到帧布局
        fl.addView(new MyView(this));
	}

    public class MyView extends View{
    	private float view_width=300;
    	private float view_height=300;
		public MyView(Context context) {
			super(context);

		}

		@Override
		protected void onDraw(Canvas canvas) {
			Paint paint=new Paint();
			paint.setAntiAlias(true);
			Bitmap bitmap_bg=BitmapFactory.decodeResource(MainActivity.this.getResources(),R.drawable.ic_launcher);
			//创建一个在水平方向和垂直方向都重复的BitmapShader对象
			BitmapShader bitmapShader=new BitmapShader(bitmap_bg,TileMode.REPEAT,TileMode.REPEAT);
			paint.setShader(bitmapShader);//设置渲染对象
			canvas.drawRect(0, 0,view_width,view_height,paint);
			Bitmap bm=BitmapFactory.decodeResource(MainActivity.this.getResources(), R.drawable.img1);
			//创建一个在水平方重复,在垂直方向镜像的BitmapShader对象
			BitmapShader bs=new BitmapShader(bm,TileMode.REPEAT,TileMode.MIRROR);
			paint.setShader(bs);
			RectF oval=new RectF(0,0,280,180);
			canvas.translate(40, 20);//将画面在X轴上平移40像素,在Y轴上平移20像素
			canvas.drawOval(oval, paint);//绘制一个使用BitmapShader渲染的椭圆形

		}

    }
}

运行结果如图所示

转载请注明出处:http://blog.csdn.net/acmman/article/details/45601887

时间: 2024-09-20 04:05:06

【Android开发】图形图像处理技术-使用BitmapShader渲染图像的相关文章

android中图形图像处理之drawable用法分析_Android

本文实例讲述了android中图形图像处理之drawable用法.分享给大家供大家参考.具体如下: 一.如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources 其主要接口按照功能,划分为以下三部分: getXXXX() 例如: int getColor(int id) Drawable getDrawable(int id) String getString(int id)  直接获取res中存放的资源 InputStream ope

android中图形图像处理之drawable用法分析

本文实例讲述了android中图形图像处理之drawable用法.分享给大家供大家参考.具体如下: 一.如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources 其主要接口按照功能,划分为以下三部分: getXXXX() 例如: int getColor(int id) Drawable getDrawable(int id) String getString(int id)  直接获取res中存放的资源 InputStream ope

【Android开发】图形图像处理技术-Bitmap和BitmapFactory类

一.Bitmap类 Bitmap类代表位图,是Android系统中图像处理的一个重要类.使用该类,不仅可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,而且还可以指定格式保存图像文件.对于这些操作,都可以通过Bitmap类提供的方法来实现.Bitmap类提供的常用方法如表所示: (1)public final int getHeight():获取位图宽度 (2)public final int getWidth():获取位图高度 (3)public static Bitmap createB

【Android开发】图形图像处理技术-常用绘图类之Paint类

    Paint类代表画笔,用来描述图形的颜色风格,如线宽.颜色.透明度和填充效果等信息.使用Paint类时,首先需要创建该类的对象,这可以通过该类提供的构造方法来实现.通常情况下,只需要使用无参数的构造方法来创建一个使用默认设置的Paint对象,具体代码如下: Paint paint=new Paint(); 创建Paint类的对象之后,还可以通过该对象提供的方法来对画笔的默认设置进行改变,例如,改变画笔的颜色.笔触宽度等.用于改变画笔设置的常用方法如表所示: 1.图像绘制 setARGB(

【Android开发】图形图像处理技术-实现Android动画的两种方式

在应用Android进行项目开发时,特别是在进行游戏开发时,经常需要涉及动画.Android中的动画通常可以分为逐帧动画(Frame Animation)和补间动画(Tween Animation)两种.下面将分别介绍这两种动画. 一.实现逐帧动画(Frame Animation) 逐帧动画就是顺序播放事先准备好的静态图像,利用人眼的"视觉暂留"原理,给用户造成动画的错觉.实现逐帧动画比较简单,只需要一下两个步骤: (1)在Android XML资源文件中定义一组用于生成动画的图片资源

【Android开发】图形图像处理技术-绘制文本

在Android中,虽然可以通过TextView或图片现实文本,但是在开发游戏,特别是开发RPG(角色)类游戏时,会包含很多文字,使用TextView和图片显示文本不太合适,这时,就需要通过绘制文本的方式来实现. Canvas类提供了一系列绘制文本的方法,下面分别行介绍: 1.drawText()方法用于在画布的指定位置绘制文字.该方法比较常用的语法格式如下: drawText(String Text,float x,float y,Paint paint); text用于指定要绘制的文字,x.

【Android开发】图形图像处理技术-常用绘图类之Canvas类

Canvans类代表画布,通过该类提供的方法,可以绘制各种图形(如矩形.圆形和线条等).通常情况下,要在Android中绘图,需要先创建一个继承自View类的视图,并且在该类中重写onDraw(Canvas canvas)方法,然后在显示绘图的Activity中添加该视图. 下面通过一个具体的实例来说明如何创建用于绘图的画布. 1.创建一个名称为DrawView的类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,关键代码如下: pa

【Android开发】图形图像处理技术-旋转、缩放、倾斜和平移图像

一.旋转图像 使用Android提供的android.graphics.Matrix类的setRotate().postRotate()和preRotate()方法,可以对图像进行旋转. 由于这三种方法处理方法名不同外,语法格式等均相同,下面将以setRotate()方法为例来进行介绍.setRotate()方法有以下两种语法格式: 1.setRotate(float degress) 使用该语法可以控制Matrix进行旋转,float类型的参数用于指定旋转的角度.例如,创建一个Matrix的对

【Android开发】图形图像处理技术-绘制路径

在Android中提供了绘制路径的功能.绘制一条路径可以分为创建路径和将定义好的路径绘制在画布上两部分,下面分别进行介绍. 1.创建路径 要创建路径,可以使用android.graphics.Path类来实现.Path类包含一组矢量绘图方法,如画圆.矩形.弧.线条等.常用的绘图方法如下表: void  addArc(RectF oval, float startAngle, float sweepAngle)  //为路径添加一个多边形   void  addCircle(float x, fl