灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2415回复:0

Android绘制进阶之一:图形的绘制

楼主#
更多 发布于:2012-09-06 13:51

开始学习绘制,首先联系图像的基本元素的绘制,包括点线面及路径的绘制,没有难度,代码示例如下:
1. package com.mike.activity;
2.
3. import Android.R;
4. import Android.app.Activity;
5. import Android.graphics.Bitmap;
6. import Android.graphics.Canvas;
7. import Android.graphics.Color;
8. import Android.graphics.Paint;
9. import Android.graphics.Paint.Style;
10. import Android.graphics.Path;
11. import Android.graphics.RectF;
12. import Android.graphics.drawable.BitmapDrawable;
13. import Android.os.Bundle;
14. import Android.view.ViewGroup.LayoutParams;
15. import Android.widget.ImageView;
16. import Android.widget.LinearLayout;
17.
18. public class DrawDemoActivity extends Activity {
19.     /** Called when the activity is first created. */
20.     @Override
21.     public void onCreate(Bundle savedInstanceState) {
22.         super.onCreate(savedInstanceState);
23.
24.         /*
25.          * 配置類型:1,ALPHA_8: 用于Alpha蒙版的位图,只为alpha通道分配8位,没有其他颜色
26.          *           2,ARGB_4444,
27.          *           3,ARGB_8888,
28.          *           4,RGB565(与ARGB_8888具有相同的高质量,但占用更少的内存)
29.          *
30.          * ARGB_8888 :每个颜色占8位,创建位图
31.          * param :      A:alpha通道:灰度通道,用来表明透明度信息,共256级
32.          *           R:red  
33.          *           G:green    
34.          *           B:blue
35.          *
36.          *
37.          * Note: 蒙板:蒙板要结合图层来使用。蒙板的用处很多,可以用来扣图、创建选区等等,
38.          *             由于我好久不用PS了,所以蒙板的好多功能在这里不能一下子讲完。
39.                                                                举个通俗的例子:蒙板就是一块布,在某一图层上添加蒙板后就是在那个图层上盖了一块布,
40.                                                                利用那块布可以实现多种效果,用黑色在蒙板上填充就看不见蒙板所在图层下面的东西,
41.                                                                用白色填充就看见蒙板所在图层下面的东西,还可以利用蒙板制作渐变。
42.                                                                总之蒙板这个功能说复杂它就复杂,说它简单它就简单,这个家伙功能不小。
43.          *
44.          */
45.         Bitmap bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay().getWidth(),
46.                 getWindowManager().getDefaultDisplay().getHeight(),
47.                 Bitmap.Config.ARGB_8888);//配置
48.        
49.    
50.        
51.     Canvas canvas = new Canvas(bitmap); //画布
52.    
53.     Paint paint = new Paint();
54.     paint.setColor(Color.WHITE);//可以直接设置颜色,也可通过Argb方法,,设置精确颜色
55. //  int myColor = Color.argb(alpha, red, green, blue);
56.    
57.    
58.     /*
59.      * 风格:
60.      *         STROKE 仅绘形状的轮廓
61.      *         FILL   仅填充形状 www.atcpu.com
62.      *         FILL_AND_STROKE 填充并绘制形状的轮廓
63.      */
64.    
65.     //1:画一个点
66. //  paint.setStyle(Style.STROKE);不涉及封闭图形,不写此属性ok~
67. //  paint.setStrokeWidth(100);
68. //  canvas.drawPoint(199, 201, paint);
69.    
70.    
71.     //2,画一条线
72. //  paint.setStyle(Style.STROKE);不涉及封闭图形,不写此属性ok~
73. //  paint.setStrokeWidth(10);
74. //  canvas.drawLine(50, 50, 100, 100, paint);
75.    
76.     //3,画一个矩形
77. //  paint.setStyle(Style.FILL_AND_STROKE);
78. //  paint.setStrokeWidth(10);
79. //  canvas.drawRect(50, 50, 100, 100, paint);//另外一种绘制矩形的方法是:传递一个RectF对象
80.    
81.     //4,画一个椭圆
82. //  paint.setStyle(Style.STROKE);
83. //  paint.setStrokeWidth(10);
84. //  RectF oval = new RectF(10, 10, 400, 200) ;//即矩形的内接圆
85. //  canvas.drawOval(oval , paint);
86.    
87.     //5,画一个圆
88. //  paint.setStyle(Style.STROKE);
89. //  paint.setStrokeWidth(10);
90. //  canvas.drawCircle(100, 100, 50, paint);
91.    
92.     //6,路径:通过路径Path对象
93. //  paint.setStyle(Style.STROKE);
94. //  paint.setStrokeWidth(10);
95. //  Path path = new Path();
96. //  path.moveTo(20, 20);//起始点
97. //  path.lineTo(30, 30);
98. //  path.lineTo(40, 60);
99. //  path.lineTo(70, 100);
100. //  canvas.drawPath(path, paint);
101.    
102.     ImageView imageView = new ImageView(this);
103.    
104.     LayoutParams p = new LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT);
105.     imageView.setLayoutParams(p);
106.     imageView.setBackgroundDrawable(new BitmapDrawable(bitmap));
107.    
108.    
109.     setContentView(imageView);
110.    
111.
112.     }
113. }

喜欢0 评分0
游客

返回顶部