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

来源:互联网 发布:昆明程序员工资 编辑:程序博客网 时间:2024/05/21 22:22
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方法 * */@Overrideprotected 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方法 * */@Overrideprotected 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);}}

效果如图所示


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

0 0
原创粉丝点击