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

    Paint类代表画笔,用来描述图形的颜色风格,如线宽、颜色、透明度和填充效果等信息。使用Paint类时,首先需要创建该类的对象,这可以通过该类提供的构造方法来实现。通常情况下,只需要使用无参数的构造方法来创建一个使用默认设置的Paint对象,具体代码如下:

Paint paint=new Paint();

创建Paint类的对象之后,还可以通过该对象提供的方法来对画笔的默认设置进行改变,例如,改变画笔的颜色、笔触宽度等。用于改变画笔设置的常用方法如表所示:

1.图像绘制 
setARGB(int a,int r,int g,int b);  
设置绘制的颜色,a代表透明度,r,g,b代表颜色值。  

setAlpha(int a);  
设置绘制图形的透明度。      
 
setColor(int color);  
设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。  
 
setAntiAlias(boolean aa);  
设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。  
 
setDither(boolean dither);  
设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰  
 
setFilterBitmap(boolean filter);  
如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示  
速度,本设置项依赖于dither和xfermode的设置      
 
setMaskFilter(MaskFilter maskfilter);  
设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等      
 
setColorFilter(ColorFilter colorfilter);  
设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果    
 
setPathEffect(PathEffect effect);  
设置绘制路径的效果,如点画线等       
 
setShader(Shader shader);  
设置图像效果,使用Shader可以绘制出各种渐变效果  
 
setShadowLayer(float radius ,float dx,float dy,int color);  
在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色       
 
setStyle(Paint.Style style);  
设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE  
 
setStrokeCap(Paint.Cap cap);  
当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式  
Cap.ROUND,或方形样式Cap.SQUARE  
 
setSrokeJoin(Paint.Join join);  
设置绘制时各图形的结合方式,如平滑效果等    
 
setStrokeWidth(float width);  
当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度       
 
setXfermode(Xfermode xfermode);  
设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果  
 
2.文本绘制  
 
setFakeBoldText(boolean fakeBoldText);  
模拟实现粗体文字,设置在小字体上效果会非常差     
 
setSubpixelText(boolean subpixelText);  
设置该项为true,将有助于文本在LCD屏幕上的显示效果       
 
setTextAlign(Paint.Align align);  
设置绘制文字的对齐方向  
 
setTextScaleX(float scaleX);  
设置绘制文字x轴的缩放比例,可以实现文字的拉伸的效果  
 
setTextSize(float textSize);  
设置绘制文字的字号大小  
 
setTextSkewX(float skewX);  
设置斜体文字,skewX为倾斜弧度  
 
setTypeface(Typeface typeface);  
设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等      
 
setUnderlineText(boolean underlineText);  
设置带有下划线的文字效果       
 
setStrikeThruText(boolean strikeThruText);  
设置带有删除线的效果

例如,要定义一个画笔,指定画笔颜色为红色,并带一个浅灰色的阴影,可以使用下面的代码:
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setShadowLayer(2,3,3,Color.rgb(180.180,180));

先通过一个实例来说明paint的使用:
分别定义一个线性渐变、径向渐变和角度渐变的画笔,并应用这三个画笔绘制3个矩形:

res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/tableLayout1"
    android:orientation="vertical"
    >
 	<com.example.test.DrawView
 	    android:id="@+id/drawView1"
 	    android:layout_width="wrap_content"
 	    android:layout_height="wrap_content"/>
</LinearLayout>

DrawView.java:

package com.example.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Paint;
import android.graphics.RadialGradient;
import android.graphics.Shader;
import android.graphics.SweepGradient;
import android.util.AttributeSet;
import android.view.View;

public class DrawView extends View{
	/*
	 * 功能:构造方法
	 * */
	public DrawView(Context context, AttributeSet attrs) {
		super(context, attrs);

	}

	/*
	 * 功能:重写onDraw方法
	 * */
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		Paint paint=new Paint();//定义一个默认的画笔
        //线性渐变
        Shader shader=new LinearGradient(0,0,50,50,Color.RED,Color.GREEN,Shader.TileMode.MIRROR);
        paint.setShader(shader);
        canvas.drawRect(10, 70,100,150,paint);
        //径向渐变
        shader=new RadialGradient(160,110,50,Color.RED,Color.GREEN,Shader.TileMode.MIRROR);
        paint.setShader(shader);
        canvas.drawRect(10, 70,100,150,paint);
        //角度渐变
        shader=new SweepGradient(265,110,new int[]{Color.RED,Color.GREEN,Color.BLUE},null);
        paint.setShader(shader);
        canvas.drawRect(10, 70,100,150,paint);
	}
}

实验效果如图

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

时间: 2024-11-03 21:44:33

【Android开发】图形图像处理技术-常用绘图类之Paint类的相关文章

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

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

Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】

本文实例讲述了Android开发中4个常用的工具类.分享给大家供大家参考,具体如下: 1.土司工具类(Toast管理) /** * Toast统一管理类 * * @Project App_ZXing * @Package com.android.scan * @author chenlin * @version 1.0 * @Date 2013年7月6日 * @Note TODO */ public class ToastUtil { private ToastUtil() { /* canno

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开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】

本文实例讲述了Android开发实现的IntentUtil跳转多功能工具类.分享给大家供大家参考,具体如下: 说明:此工具类是本人开发中总结下来的,还有其它的跳转亲给我留言,希望大家一起把这个工具类打造成最全的跳转工具,谢谢! package com.android.chat.utils; import java.io.File; import java.io.Serializable; import android.app.Activity; import android.content.Co

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

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

android开发-java全局变量的问题,咋存储每个类中都有可能用到的数据

问题描述 java全局变量的问题,咋存储每个类中都有可能用到的数据 大家都说全局变量不好.我有个问题:android开发.当用户登录了, 用户名,头像,...这些信息应该放到什么地方合适? 这些数据每个类中都有可能用到. 来电代码解释解释. 求高手 解决方案 哎呦,又要存到SharePreferences里面, 东西太多了吧 解决方案二: 推荐将用户基本信息保存使用SharePreferences,然后创建一个JavaBean解析保存的xml数据,通过调用get方法判断是否登录用户信息,钊林IT

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

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

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

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