标签:
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字体。 */ } }代码中的注释最为清楚,如果清楚请仔细看注释
标签:
原文地址:http://blog.csdn.net/mxcsdn/article/details/51336810