【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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值