android之各种图形绘制

Android中绘制图片或形状是我们常遇到的事情,通过最近的学习与在网上学习的案例与资料那么我今天就总结一下android中绘制用到的一些类和方法,其中其中主要包括3个类Canvas,Paint,Bitmap,这里我做的不规范,直接在主类中添加代码,如果想规范一点你们可以自定义一个View,覆写onDraw()方法,在onDraw()中进行代码的添加,先看一下效果图:

此类部分解释有借鉴:http://blog.csdn.net/rhljiayou/article/details/7212620

Canvas类常用的方法:

drawRect(RectF rect, Paint paint) //绘制矩形,

drawPath(Path path, Paint paint) //绘制一个路径(多个参数组成)

drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)  //绘制图片

drawLine(float startX, float startY, floatstopX, float stopY, Paintpaint) //绘制线条drawPoint(floatx, float y, Paint
paint) //画点

drawText(String text, float x, floaty,Paint paint)  //渲染文本

drawOval(RectF
oval, Paint
paint)//绘制椭圆

drawCircle(float
cx, float cy, float radius,Paint
paint)// 绘制圆,xy坐标为中心点

drawArc(RectF
oval, float startAngle, float sweepAngle, booleanuseCenter, Paint
paint)//画弧,

参数一是RectF对象,一个矩形区域椭圆形的界限用于定义在形状、大小、电弧,参数二是起始角(度)在电弧的开始,

参数三扫描角(度)开始顺时针测量的,参数四是如果这是真的话,包括椭圆中心的电弧,并关闭它,如果它是假这将是一个弧线,参数五是Paint对象;

Paint类常用方法:

setARGB(int a, int r, int g, int b) //
设置 Paint对象颜色

setAlpha(int a) // 设置alpha不透明度,范围为0~255

setAntiAlias(boolean aa) //
是否锯齿

setColor(int color)  //
设置颜色

setTextScaleX(float scaleX)  //
设置文本缩放倍数,1.0f为原始

setTextSize(float textSize)  //
设置字体大小

setUnderlineText(booleanunderlineText) //
设置下划线

package com.edu;

import android.R.color;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Display;
import android.widget.ImageView;

public class DrawPictureActivity extends Activity {
	ImageView imageView = null;
	Bitmap alter = null;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		imageView = (ImageView) findViewById(R.id.imageView1);

		Display current = getWindowManager().getDefaultDisplay();// 获取系统设备尺寸
		// 创建一个画布与屏幕属性一样,如果是在onDraw方法中就不需要创建了
		alter = Bitmap.createBitmap(current.getWidth(), current.getHeight(),
				Bitmap.Config.ARGB_8888);// ARGB_8888就是由4(ARGB)个8位组成即32位
		// 位图位数越高代表其可以存储的颜色信息越多,当然图像也就越逼真

		Canvas canvas = new Canvas(alter);
		Paint paint = new Paint();
		// 绘制点
		paint.setStrokeWidth(4.5f);
		paint.setColor(Color.RED);
		canvas.drawPoint(60, 500, paint);// 画一个点
		canvas.drawPoints(new float[] { 60, 520, 70, 520, 80, 520 }, paint);// 画多个点
		// 设置画笔的粗细
		paint.setStrokeWidth(15.5f);
		// paint.setColor(Color.argb(200, 200, 200, 200));
		// 绘制线
		paint.setColor(Color.YELLOW);
		canvas.drawLine(100, 50, 500, 650, paint);
		// 绘制圆
		paint.setStyle(Paint.Style.STROKE);// Paint.Style.STROK---轮廓
											// Paint.Style.FILL_AND_STROKE---填充
		paint.setColor(Color.BLUE);// 默认有锯齿
		canvas.drawCircle(200, 200, 160, paint);
		paint.setAntiAlias(true);// 设置画笔的锯齿效果,true是去除锯齿
		canvas.drawCircle(500, 600, 80, paint);
		// 绘制椭圆
		RectF rf = new RectF(100, 200, 500, 400);
		paint.setColor(Color.WHITE);
		canvas.drawOval(rf, paint);
		// 绘制矩形
		canvas.drawRect(rf, paint);
		// 画弧
		RectF rf1 = new RectF(200, 600, 500, 800);
		paint.setColor(Color.RED);
		canvas.drawArc(rf1, 200, 130, false, paint);
		// 画扇形
		RectF rf2 = new RectF(200, 800, 500, 1000);
		paint.setColor(Color.RED);
		canvas.drawArc(rf2, 200, 130, true, paint);
		// 画弧,第一个参数是RectF:该类是第二个参数是角度的开始,第三个参数是多少度,
		// 第四个参数是真的时候画扇形,是假的时候画弧线

		// 绘制路径
		paint.setColor(Color.GREEN);
		Path path = new Path();
		path.moveTo(400, 100);
		path.lineTo(200, 350);
		path.lineTo(200, 850);
		path.lineTo(400, 1100);
		path.lineTo(600, 850);
		path.lineTo(600, 350);
		path.close();// 封闭或者path.lineTo(400, 100);即开始的位置

		canvas.drawPath(path, paint);
		// 绘制文字
		paint.setColor(Color.GREEN);
		paint.setStrokeWidth(2.0f);
		paint.setTypeface(Typeface.SANS_SERIF);// 参数typeface为字体样式Typeface.DEFAULT:默认字体。
		paint.setTextSize(30); // 设置字体的大小
		canvas.drawText("hello word!!", 500, 700, paint);
		// 绘制图片
		// 画图片,就是贴图
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
				R.drawable.ic_launcher);
		canvas.drawBitmap(bitmap, 6, 700, paint);

		imageView.setImageBitmap(alter);
		// 当然如果 是在自定义的View的onDraw(Canvas canvas)中就不需要获取系统属性和设置画图了
		// imageView.setImageBitmap(alter);就可以去掉了
		/*
		 * Typeface.DEFAULT_BOLD:加粗字体。
		 *
		 * Typeface.MONOSPACE:monospace字体。
		 *
		 * Typeface.SANS_SERIF:sans字体。
		 *
		 * Typeface.SERIF:serif字体。
		 */
	}
}

代码中的注释最为清楚,如果清楚请仔细看注释

时间: 2024-11-14 19:47:47

android之各种图形绘制的相关文章

Android OpenGL10 基本图形绘制 <3>

下面程序的opengl的图形是根据Opengl1.0版本API进行的. <a> : 首先绘制点: <1> : 新建一个android studio工程,这个工程参考前一篇坐标系的.工程名:PumpKinBasicGL10,主类如下: package org.durian.pumpkinbasicgl10; import android.app.Activity; import android.opengl.GLSurfaceView; import android.os.Bundl

android之简单图形绘制

首先编写MyView类 代码如下: package com.example.myhello; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Rect; import and

Android中GPU硬件加速控制及其在2D图形绘制上的局限

图形的渲染可分为两种:软件渲染和硬件渲染.软件渲染是靠CPU计算各种坐标并绘制,主要是占用内存:硬件渲染是靠GPU,主要占用显存,一般的3D图形程序(OpenGL.DirectX)都是GPU加速的. 在Android3.0之前,2D绘图API只支持软件渲染模式,从Android3.0开始,2D绘图API开始支持GPU硬件渲染,即View中的Canvas的绘图操作会使用GPU,所以从Android 3.0(API Level 11)开始,View中就多了一些和硬件相关的方法.如果App的Andro

android游戏开发中图形绘制:Canvas和Paint的使用

android游戏开发中,使用android.graphics中的类来绘制2D向量图和文字. 一 画布Canvas 在Android中的绘图应该继承View组件,并重写它的onDraw(Canvas canvas)方法. Canvas代表指定View上的画布,常用方法如图: 二 画刷Paint Paint代表Canvas上的画刷,主要用于绘制风格,包括画刷颜色.画刷笔触粗细.填充风格等. 大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关. 常用方法如图: 三 路径Path Path表示

Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制

原文地址:http://android.xsoftlab.net/training/graphics/opengl/draw.html 如果你还不清楚如何定义图形及坐标系统,请移步:Android官方开发文档Training系列课程中文版:OpenGL绘图之图形定义. 在定义了图形之后,你接下来需要做的就是将它绘制到屏幕上.不过使用OpenGL ES 2.0 API来绘制这个图形所需要的代码量可能要比想象中的多一些,这是因为API为图形渲染管道提供了大量的控制细节. 这节课会展示如何绘制上节课所

【Windows编程】系列第五篇:GDI图形绘制

上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数百个API可供我们使用,本篇把最常用的GDI绘图做一个讲解.GDI可以绘制点.直线曲线.填充封闭区域.位图以及文本,其中文本部分已经在上一篇中将了,请参考[Windows编程]系列第三篇:文本字符输出. 跟前面的GDI对象一样,本篇的这些绘图函数也必须要设备上下文句柄(HDC)作为函数参数,从前文我

chromium for android v34 2dCanvas硬件绘制及硬件渲染实现分析

HTMLCanvasElement对应h5的canvas元素. 解析网页遇到canvas元素会创建HTMLCanvasElement实例. Canvas可以支持2d和3d图形的绘制. HTMLCanvasElement提供了getContext()接口,返回图形绘制的上下文对象, 对于2d图形返回的是CanvasRenderingContext2D. CanvasRenderingContext2D提供了网页可调用的所有绘制动作. CanvasRenderingContext2D的所有绘制命令都

Android应用自定义View绘制方法手册

背景 这篇迟迟难产的文章算是对2015前半年的一个交代吧,那时候有一哥们要求来一发Android Canvas相关总结,这哥们还打赏了,实在不好意思,可是这事一放就给放忘了,最近群里小伙伴催着说没更新博客,坐等更新啥的,随先有这么一篇Android应用开发超级基础的文章诞生了(因为这种文章最好写哈,就是用熟了就行).不得不说下这么久为何一直没更新博客的原因了,首先遇上了过年,我个人崇尚过节就该放下一切好好陪陪亲人,珍惜在一起的时光:其次今年开年很是蛋疼,不是不顺当就是深深的觉得被坑,所以心情也就

图形绘制 Canvas Paint Path 详解

图形绘制简介        Android中使用图形处理引擎,2D部分是android SDK内部自己提供,3D部分是用Open GL ES 1.0.大部分2D使用的api都在android.graphics和android.graphics.drawable包中.他们提供了图形处理相关的Canvas.ColorFilter.Point.RetcF等类,还有一些动画相关的AnimationDrawable.BitmapDrawable.TransitionDrawable等.       以图形