您的位置:首页 > 移动开发 > Android开发

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

2015-04-20 21:58 441 查看
    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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: