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

时间:2020-12-13 22:41:30
Canvans类代表画布,通过该类提供的方法,可以绘制各种图形(如矩形、圆形和线条等)。通常情况下,要在Android中绘图,需要先创建一个继承自View类的视图,并且在该类中重写onDraw(Canvas canvas)方法,然后在显示绘图的Activity中添加该视图。

下面通过一个具体的实例来说明如何创建用于绘图的画布。

1.创建一个名称为DrawView的类,继承android.view.View类,并添加构造方法和重写onDraw(Canvas canvas)方法,关键代码如下:
package com.example.test;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
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);


}
}

设置布局文件main.xml
res/layout/main.xml:
创建线性布局管理器,然后在里面添加上面创建的自定义视图DrawView:
<?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的onDraw()方法中,添加以下代码,用于绘制一个带阴影的红色矩形
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setShadowLayer(2, 3, 3, Color.rgb(180, 180, 180));
canvas.drawRect(40, 40,200,100,paint);

即是:
package com.example.test;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
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();
paint.setColor(Color.RED);
paint.setShadowLayer(2, 3, 3, Color.rgb(180, 180, 180));
canvas.drawRect(40, 40,200,100,paint);
}
}

效果如图所示

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

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