android canvas绘制简单图形和图片

本文详细介绍了如何使用 Android Canvas 绘制矩形、圆形、扇形、直线等基本图形,并展示了如何在画布上绘制图片。通过代码实现和运行截图,读者可以深入理解 Android Canvas 的绘图原理和技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分

android canvas绘制简单图形

程序运行截图


代码功能

实现对矩形 圆形 扇形  直线的绘制。

代码实现

MainActivity.java

package com.example.simplecanvas;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


MyView.java

package com.example.simplecanvas;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {
	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		canvas.drawColor(Color.BLACK);
		Paint paint = new Paint();
		paint.setColor(Color.RED);
		canvas.drawRect(10, 10, 110, 110, paint);
		canvas.drawText("This is TEXT", 10, 130, paint);
		RectF rf1 = new RectF(10, 130, 110, 230);
		canvas.drawArc(rf1, 0, 45, true, paint);
		canvas.drawLine(150, 10, 250, 110,paint);
		RectF rf2=new RectF(150,130,250,230);
		canvas.drawOval(rf2, paint);
	}
}


main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.example.simplecanvas.MyView
android:id="@+id/myView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

需要注意

第一点

drawRect函数的前面2个参数是左上角的坐标。

drawText函数是字符串左下角的坐标。

第二点

在main.xml中使用自定义的View类时需要使用全称类名,在本例中就是com.example.simplecanvas.MyView

不能够直接声明为MyView

这样虽然编译时不会出错,但是运行时会出错。

第三点

drawArc方法

第二个和第三个参数分别是起始角度和扫过的角度。方向是顺时针。

第四个参数规定是否在绘制圆弧时是否使用圆形。

如下图是将上例的drawArc的第四个参数改为false时的运行截图


因为规定绘制时不包括圆形,因此绘制出的实际上是原来扇形的一段圆弧,而非扇形。

 

第二部分

android canvas绘制图片

和绘制简单图形类似。

需要做的变动如下

为了绘制图片,首先需要获得一个位图对象.。

Bitmap myBitmap;
myBitmap=BitmapFactory.decodeResources(),R.drawable.img);

然后就可以在画布上绘出图片了

paint.setAntAlias(true);
canvas.drawBitmap(myBitmap,10,10,paint);

注:本文所用代码来自<<android 2.0游戏开发实战宝典>>一书第二章第二小节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值