开始学习绘制,首先联系图像的基本元素的绘制,包括点线面及路径的绘制,没有难度,代码示例如下:
- package com.mike.activity;
- import android.R;
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.graphics.Paint.Style;
- import android.graphics.Path;
- import android.graphics.RectF;
- import android.graphics.drawable.BitmapDrawable;
- import android.os.Bundle;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- public class DrawDemoActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- /*
- * 配置類型:1,ALPHA_8: 用于Alpha蒙版的位图,只为alpha通道分配8位,没有其他颜色
- * 2,ARGB_4444,
- * 3,ARGB_8888,
- * 4,RGB565(与ARGB_8888具有相同的高质量,但占用更少的内存)
- *
- * ARGB_8888 :每个颜色占8位,创建位图
- * param : A:alpha通道:灰度通道,用来表明透明度信息,共256级
- * R:red
- * G:green
- * B:blue
- *
- *
- * Note: 蒙板:蒙板要结合图层来使用。蒙板的用处很多,可以用来扣图、创建选区等等,
- * 由于我好久不用PS了,所以蒙板的好多功能在这里不能一下子讲完。
- 举个通俗的例子:蒙板就是一块布,在某一图层上添加蒙板后就是在那个图层上盖了一块布,
- 利用那块布可以实现多种效果,用黑色在蒙板上填充就看不见蒙板所在图层下面的东西,
- 用白色填充就看见蒙板所在图层下面的东西,还可以利用蒙板制作渐变。
- 总之蒙板这个功能说复杂它就复杂,说它简单它就简单,这个家伙功能不小。
- *
- */
- Bitmap bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(),
- getWindowManager().getDefaultDisplay().getHeight(),
- Bitmap.Config.ARGB_8888);//配置
- Canvas canvas = new Canvas(bitmap); //画布
- Paint paint = new Paint();
- paint.setColor(Color.WHITE);//可以直接设置颜色,也可通过Argb方法,,设置精确颜色
- // int myColor = Color.argb(alpha, red, green, blue);
- /*
- * 风格:
- * STROKE 仅绘形状的轮廓
- * FILL 仅填充形状
- * FILL_AND_STROKE 填充并绘制形状的轮廓
- */
- //1:画一个点
- // paint.setStyle(Style.STROKE);不涉及封闭图形,不写此属性ok~
- // paint.setStrokeWidth(100);
- // canvas.drawPoint(199, 201, paint);
- //2,画一条线
- // paint.setStyle(Style.STROKE);不涉及封闭图形,不写此属性ok~
- // paint.setStrokeWidth(10);
- // canvas.drawLine(50, 50, 100, 100, paint);
- //3,画一个矩形
- // paint.setStyle(Style.FILL_AND_STROKE);
- // paint.setStrokeWidth(10);
- // canvas.drawRect(50, 50, 100, 100, paint);//另外一种绘制矩形的方法是:传递一个RectF对象
- //4,画一个椭圆
- // paint.setStyle(Style.STROKE);
- // paint.setStrokeWidth(10);
- // RectF oval = new RectF(10, 10, 400, 200) ;//即矩形的内接圆
- // canvas.drawOval(oval , paint);
- //5,画一个圆
- // paint.setStyle(Style.STROKE);
- // paint.setStrokeWidth(10);
- // canvas.drawCircle(100, 100, 50, paint);
- //6,路径:通过路径Path对象
- // paint.setStyle(Style.STROKE);
- // paint.setStrokeWidth(10);
- // Path path = new Path();
- // path.moveTo(20, 20);//起始点
- // path.lineTo(30, 30);
- // path.lineTo(40, 60);
- // path.lineTo(70, 100);
- // canvas.drawPath(path, paint);
- ImageView p_w_picpathView = new ImageView(this);
- LayoutParams p = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
- p_w_picpathView.setLayoutParams(p);
- p_w_picpathView.setBackgroundDrawable(new BitmapDrawable(bitmap));
- setContentView(p_w_picpathView);
- }
- }