好东西 都要拿出来分享  看到这个不错  挺详细的 就记下来了

 在Android中需要通过graphics类来显示2D图形。

  graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用的类。graphics具有绘制点、线、颜色、2D几何图形、图像处理等功能。

  1.Color(颜色)类

  Android系统中颜色的常用表示方法有以下3种:

  (1)int color = Color.BLUE;

  (2)int color = Color.argb(150,200,0,100);

  (3)在xml文件中定义颜色;

  在实际应用当中,我们常用的颜色有以下一些,其颜色常量及其表示的颜色如下所示:

  Color.BLACK      黑色                                       Color.GREEN                  绿色

  Color.BLUE        蓝色                                       Color.LTGRAY                浅灰色

  Color.CYAN       青绿色                                     Color.MAGENTA              红紫色

  Color.DKGRAY    灰黑色                                    Color.RED                      红色

  Color.YELLOW    黄色                                       Color.TRANSPARENT       透明

  Color.GRAY        灰色                                       Color.WHITE                  白色

  2.Paint(画笔)类

  要绘制图形,首先得调整画笔,按照自己的开发需要设置画笔的相关属性。Pain类的常用属性设置方法如下:

  setAntiAlias();            //设置画笔的锯齿效果

  setColor();                 //设置画笔的颜色

  setARGB();                 //设置画笔的A、R、G、B值

  setAlpha();                 //设置画笔的Alpha值

  setTextSize();             //设置字体的尺寸

  setStyle();                  //设置画笔的风格(空心或实心)

  setStrokeWidth();        //设置空心边框的宽度

  getColor();                  //获取画笔的颜色

  3.Canvas(画布)类

  画笔属性设置好之后,还需要将图像绘制到画布上。Canvas类可以用来实现各种图形的绘制工作,如绘制直线、矩形、圆等等。Canvas绘制常用图形的方法如下:

  绘制直线:canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint);

  绘制矩形:canvas.drawRect(float left, float top, float right, float bottom, Paint paint);

  绘制圆形:canvas.drawCircle(float cx, float cy, float radius, Paint paint);

  绘制字符:canvas.drawText(String text, float x, float y, Paint paint);

  绘制图形:canvas.drawBirmap(Bitmap bitmap, float left, float top, Paint paint);

  4.自定义View的基本实现方法

  首先,我们需要自定义一个类,比如MyView,继承于View类。然后,复写View类的onDraw()函数。最后,在onDraw()函数中使用Paint和Canvas对象绘制我们需要的图形。

  5.动手实践

  在这里,我使用上面提到的一些方法,绘制了一幅简单的北京奥运宣传画,包括奥运五环,“北京欢迎您”的宣传标语以及福娃。做成后的效果图如图1所示。

图1 Android_OlympicLogo效果图

  其中,使用了自定义的MyView类,在MyView类中,重写了onDraw()函数,并定义几种不同的画笔,分别用来绘制各种颜色的奥运五环以及绘制字符串“北京欢迎您”等。具体的MyView.java源代码如下。

 1 package com.example.android_olympiclogo;
 2
 3 import android.view.View;
 4 import android.content.Context;
 5 import android.graphics.BitmapFactory;
 6 import android.graphics.Canvas;
 7 import android.graphics.Color;
 8 import android.graphics.Paint;
 9 import android.graphics.Paint.Style;
10
11 public class MyView extends View {
12
13     public MyView(Context context) {
14         super(context);
15     }
16
17     public void onDraw(Canvas canvas) {
18
19         Paint paint_blue = new Paint();                        //绘制蓝色的环
20         paint_blue.setColor(Color.BLUE);
21         paint_blue.setStyle(Style.STROKE);
22         paint_blue.setStrokeWidth(10);
23         canvas.drawCircle(110,150,60,paint_blue);
24
25         Paint paint_yellow = new Paint();                //绘制黄色的环
26         paint_yellow.setColor(Color.YELLOW);
27         paint_yellow.setStyle(Style.STROKE);
28         paint_yellow.setStrokeWidth(10);
29         canvas.drawCircle((float)175.5, 210, 60, paint_yellow);
30
31         Paint paint_black = new Paint();                   //绘制黑色的环
32         paint_black.setColor(Color.BLACK);
33         paint_black.setStyle(Style.STROKE);
34         paint_black.setStrokeWidth(10);
35         canvas.drawCircle(245, 150, 60, paint_black);
36
37         Paint paint_green = new Paint();                  //绘制绿色的环
38         paint_green.setColor(Color.GREEN);
39         paint_green.setStyle(Style.STROKE);
40         paint_green.setStrokeWidth(10);
41         canvas.drawCircle(311, 210, 60, paint_green);
42
43         Paint paint_red = new Paint();                       //绘制红色的环
44         paint_red.setColor(Color.RED);
45         paint_red.setStyle(Style.STROKE);
46         paint_red.setStrokeWidth(10);
47         canvas.drawCircle(380, 150, 60, paint_red);
48
49         Paint paint_string = new Paint();                   //绘制字符串
50         paint_string.setColor(Color.BLUE);
51         paint_string.setTextSize(20);
52         canvas.drawText("Welcome to Beijing", 245, 310, paint_string);
53
54         Paint paint_line = new Paint();                       //绘制直线
55         paint_line.setColor(Color.BLUE);
56         canvas.drawLine(240, 310, 425, 310, paint_line);
57
58         Paint paint_text = new Paint();                      //绘制字符串
59         paint_text.setColor(Color.BLUE);
60         paint_text.setTextSize(20);
61         canvas.drawText("北京欢迎您", 275, 330, paint_text);
62
63         //绘制福娃图片
64         canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.fuwa), 35, 340, paint_line);
65     }
66 }

  此外,还需要将自定义的MyView视图显示到手机屏幕上,所以需要在MainAcitivity.java中加载MyView视图,可以使用setContentView()方法,具体的MainAcitivity.java源代码如下。

 1 package com.example.android_olympiclogo;
 2
 3 import android.os.Bundle;
 4 import android.app.Activity;
 5 import android.view.Menu;
 6 import android.view.MenuItem;
 7 import android.support.v4.app.NavUtils;
 8
 9 public class MainActivity extends Activity {
10
11     @Override
12     public void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14 //        setContentView(R.layout.activity_main);
15         setContentView(new MyView(this));                              //加载MyView
16     }
17
18     @Override
19     public boolean onCreateOptionsMenu(Menu menu) {
20         getMenuInflater().inflate(R.menu.activity_main, menu);
21         return true;
22     }
23
24 }

  当然了,还需要将福娃的图片放在res下的drawable-hdpi目录下。这样才可以使用BitmapFactory.decodeResource(getResources(),R.drawable.fuwa)方法加载该图片。

转自  http://www.cnblogs.com/menlsh/archive/2012/11/18/2776003.html

Paint及Canvas的简单应用相关推荐

  1. Android学习笔记09:Paint及Canvas的简单应用

    2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记09:Paint及Canvas的简单应用 在Android中需要通过graphics类来显示2D图形. ...

  2. Android开发——图形编程(一)简单介绍与使用绘图类Paint、Canvas

    Android图形编程基础 文章目录 Android图形编程基础 画笔Paint的 画布Canvas 自定义View的基本实现方法 实例代码 绘图绘图,首先要有的就是颜色Color Android系统 ...

  3. Android的Paint和Canvas的使用总结

    前言: 在自定义控件时,我们有时可能会用到Paint和Canvas这两个类, Paint相当于我们在画画时的画笔,Canvs相当于我们在画画时的画布, 下面来简单讲一下这两个类常见的一些用法 Pain ...

  4. android 用canvas 绘制简单圆形时钟

    写笔记写写不过人家 http://blog.csdn.net/u010575173/article/details/52701936 1,Android - Paint基础 在自定义控件时,经常需要使 ...

  5. 介绍Android中的Paint和Canvas的概念和使用方法

    下面开始正式介绍内容 一.介绍Android中的Paint和Canvas的概念和使用方法 Android中的Paint和Canvas的概念是很简单的,就是我们用画笔在画布上进行绘制没什么难度的,我们只 ...

  6. html根据字段制作曲线图,canvas制作简单的HTML图表,折线或者矩形统计(原创)

    插件描述:canvas制作简单的HTML图表,折线或者矩形统计 使用canvas制作简单的HTML图表,折线或者矩形统计. 使用canvas制作简单的HTML图表,折线或者矩形统计,简单而实用.图形由 ...

  7. 在html利用canvas蚂蚁,html5 利用canvas实现简单的人物走动

    最近在学习html5,其中涉及到很关键的元素canvas-画布,在网上下载了一些游戏源代码,虽然能看懂,但是想单独地针对某个功能提取出来还是有难处的,于是乎自己又上网查找了一些例子,才将超级玛丽简单的 ...

  8. Android画图最基本的三个对象(Color,Paint,Canvas)

    Android画图最基本的三个对象(Color,Paint,Canvas) 三个类都存放在 android.graphics包下 1) Color :颜色对象,相当于现实生活中的 '调料' 2) Pa ...

  9. java canvas 画图片_[Java教程][HTML5] Canvas绘制简单图片

    [Java教程][HTML5] Canvas绘制简单图片 0 2016-05-13 13:00:04 获取Image对象,new出来 定义Image对象的src属性,参数:图片路径 定义Image对象 ...

最新文章

  1. Dataguard failover切换应用redo操作
  2. VMware 全虚拟打开
  3. BM微型计算机2283,微型计算机原理及接口技术钢琴课程设计最新.doc
  4. Spring MVC Boot Cloud 技术教程汇总
  5. 【升职加薪必备架构图】Springboot学习路线汇总
  6. java poi 操作ppt
  7. html期末主题作业,tm.html
  8. 默认空间和webapps下项目部署
  9. h5 字体加粗_html、css文字加粗方法
  10. 语音识别特征处理(MFCC,Fbank,PNCC)
  11. 马哥教育的python课程到底好不好_马哥教育的网络授课怎么样?
  12. DeFi黑暗森林历险记,我这样追回了百万美元
  13. 【华为OD机试真题 JS】IPv4地址转换成整数
  14. 现役大学生必看!干货满满!
  15. OpenStack搭建私有云一:认证服务
  16. Jaeger知识点补充
  17. 计算机中的英语六级作文万能模板,英语六级作文万能模板(4篇)
  18. 如果win10 硬盘依然经常100%使用率 务必请安装achi驱动。
  19. php layer弹出层更改背景,layui.layer 弹出层背景透明,前景无阴影实现方案
  20. 字节跳动人力资源体系 附下载

热门文章

  1. linux的vim命令,vim linux 命令 在线中文手册
  2. 杰里之AC695N/AC696N 蓝牙耳机PCB LAYOUT【篇6】
  3. 在感动与创新中走进2009——开复新年寄语
  4. CentOS 7查看自己IP地址方法
  5. 打印机的扫描功能使用
  6. XTransfer外贸普惠金融季,最高送2000元抵用券!
  7. STM32F103基于片内flash的数据读取与音乐播放
  8. 瑞芯微RV1109平台交叉编译踩坑
  9. 《大白AI周报》人工智能行业每周精华文章汇总(2020.07.13-07.20)
  10. 提取Excel某一列数据并统计出现次数,绘制扇形图