2019独角兽企业重金招聘Python工程师标准>>>

* Paint类介绍  
     *   
     * Paint即画笔,在绘图过程中起到了极其重要的作用,画笔主要保存了颜色,  
     * 样式等绘制信息,指定了如何绘制文本和图形,画笔对象有很多设置方法,  
     * 大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。         
     *   
     * 1.图形绘制  
     * setARGB(int a,int r,int g,int b);  
     * 设置绘制的颜色,a代表透明度,r,g,b代表颜色值。  
     *   
     * setAlpha(int a);  
     * 设置绘制图形的透明度。  
     *   
     * setColor(int color);  
     * 设置绘制的颜色,使用颜色值来表示,该颜色值包括透明度和RGB颜色。  
     *   
    * setAntiAlias(boolean aa);  
     * 设置是否使用抗锯齿功能,会消耗较大资源,绘制图形速度会变慢。  
     *   
     * setDither(boolean dither);  
     * 设定是否使用图像抖动处理,会使绘制出来的图片颜色更加平滑和饱满,图像更加清晰  
     *   
     * setFilterBitmap(boolean filter);  
     * 如果该项设置为true,则图像在动画进行中会滤掉对Bitmap图像的优化操作,加快显示  
     * 速度,本设置项依赖于dither和xfermode的设置  
     *   
     * setMaskFilter(MaskFilter maskfilter);  
     * 设置MaskFilter,可以用不同的MaskFilter实现滤镜的效果,如滤化,立体等       *   
     * setColorFilter(ColorFilter colorfilter);  
     * 设置颜色过滤器,可以在绘制颜色时实现不用颜色的变换效果  
     *   
     * setPathEffect(PathEffect effect);  
     * 设置绘制路径的效果,如点画线等  
     *   
     * setShader(Shader shader);  
     * 设置图像效果,使用Shader可以绘制出各种渐变效果  
     *  
     * setShadowLayer(float radius ,float dx,float dy,int color);  
     * 在图形下面设置阴影层,产生阴影效果,radius为阴影的角度,dx和dy为阴影在x轴和y轴上的距离,color为阴影的颜色  
     *   
     * setStyle(Paint.Style style);  
     * 设置画笔的样式,为FILL,FILL_OR_STROKE,或STROKE  
     *   
     * setStrokeCap(Paint.Cap cap);  
     * 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的图形样式,如圆形样式  
     * Cap.ROUND,或方形样式Cap.SQUARE  
     *   
     * setSrokeJoin(Paint.Join join);  
     * 设置绘制时各图形的结合方式,如平滑效果等  
     *   
     * setStrokeWidth(float width);  
     * 当画笔样式为STROKE或FILL_OR_STROKE时,设置笔刷的粗细度  
     *   
     * setXfermode(Xfermode xfermode);  
     * 设置图形重叠时的处理方式,如合并,取交集或并集,经常用来制作橡皮的擦除效果  
     *   
     * 2.文本绘制  
     * setFakeBoldText(boolean fakeBoldText);  
     * 模拟实现粗体文字,设置在小字体上效果会非常差  
     *   
     * setSubpixelText(boolean subpixelText);  
     * 设置该项为true,将有助于文本在LCD屏幕上的显示效果  
     *   
     * setTextAlign(Paint.Align align);  
     * 设置绘制文字的对齐方向  
     *   
   * setTextScaleX(float scaleX);  
    * 设置绘制文字x轴的缩放比例,可以实现文字的拉伸的效果  
     *   
     * setTextSize(float textSize);  
     * 设置绘制文字的字号大小  
     *   
     * setTextSkewX(float skewX);  
     * 设置斜体文字,skewX为倾斜弧度  
     *   
     * setTypeface(Typeface typeface);  
     * 设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等  
     *   
     * setUnderlineText(boolean underlineText);  
     * 设置带有下划线的文字效果  
     *   
     * setStrikeThruText(boolean strikeThruText);  
     * 设置带有删除线的效果  
     *

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
private class MyView2 extends View {
   
         public MyView2(Context context) {
   
             super (context);
   
         }
   
         @Override
         protected void onDraw(Canvas canvas)
   
         {
   
             super .onDraw(canvas);
   
             canvas.drawColor(Color.WHITE);
   
             Paint paint = new Paint();
   
             paint.setAntiAlias( true );
   
             paint.setColor(Color.RED);
   
             paint.setStyle(Paint.Style.STROKE); //设置为空心
   
             paint.setStrokeWidth(3);
   
             canvas.drawCircle(40, 40, 30, paint);
   
             canvas.drawRect(10, 90, 70, 150, paint);
   
             canvas.drawRect(10, 170, 70, 200, paint);
   
             canvas.drawOval( new RectF(10, 220, 70, 250), paint);
   
             Path path = new Path(); //三角形
   
             path.moveTo(10, 330);
   
             path.lineTo(70, 330);
   
             path.lineTo(40, 270);
   
             path.close();
   
             canvas.drawPath(path, paint);
   
             Path path1 = new Path(); //梯形
   
             path1.moveTo(10, 410); //绘画基点
   
             path1.lineTo(70, 410);
   
             path1.lineTo(55, 350);
   
             path1.lineTo(25, 350);
   
             path1.close(); //把开始的点和最后的点连接在一起,构成一个封闭图形
             /*
              * 最重要的就是movtTo和close,如果是Style.FILL的话,不设置close,也没有区别,可是如果是STROKE模式,
              * 如果不设置close,图形不封闭。
              *
              * 当然,你也可以不设置close,再添加一条线,效果一样。
              */
             canvas.drawPath(path1, paint);
               
               
               
               
             ///第二列
   
             paint.setColor(Color.BLUE);
   
             paint.setStyle(Paint.Style.FILL); //设置实心
   
             canvas.drawCircle(120, 40, 30, paint);
   
             canvas.drawRect(90, 90, 150, 150, paint);
   
             canvas.drawRect(90, 170, 150, 200, paint);
   
             RectF re2 = new RectF(90, 220, 150, 250);
   
             canvas.drawOval(re2, paint);
   
             Path path2 = new Path();
   
             path2.moveTo(90, 330);
   
             path2.lineTo(150, 330);
   
             path2.lineTo(120, 270);
   
             path2.close();
   
             canvas.drawPath(path2, paint);
   
             Path path3 = new Path();
   
             path3.moveTo(90, 410);
   
             path3.lineTo(150, 410);
   
             path3.lineTo(135, 350);
   
             path3.lineTo(105, 350);
   
             path3.close();
   
             canvas.drawPath(path3, paint);
               
               
             第三列
               
             /*
              * LinearGradient shader = new LinearGradient(0, 0, endX, endY, new
              * int[]{startColor, midleColor, endColor},new float[]{0 , 0.5f,
              * 1.0f}, TileMode.MIRROR);
              * 参数一为渐变起初点坐标x位置,参数二为y轴位置,参数三和四分辨对应渐变终点
              * 其中参数new int[]{startColor, midleColor,endColor}是参与渐变效果的颜色集合,
              * 其中参数new float[]{0 , 0.5f, 1.0f}是定义每个颜色处于的渐变相对位置, 这个参数可以为null,如果为null表示所有的颜色按顺序均匀的分布
              */
             Shader mShader = new LinearGradient(0, 0, 100, 100,
   
             new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW },
   
             null , Shader.TileMode.REPEAT);
   
             // Shader.TileMode三种模式
   
             // REPEAT:沿着渐变方向循环重复
   
             // CLAMP:如果在预先定义的范围外画的话,就重复边界的颜色
   
             // MIRROR:与REPEAT一样都是循环重复,但这个会对称重复
   
             paint.setShader(mShader); // 用Shader中定义定义的颜色来话
   
             canvas.drawCircle(200, 40, 30, paint);
   
             canvas.drawRect(170, 90, 230, 150, paint);
   
             canvas.drawRect(170, 170, 230, 200, paint);
   
             RectF re3 = new RectF(170, 220, 230, 250);
   
             canvas.drawOval(re3, paint);
   
             Path path4 = new Path();
   
             path4.moveTo(170, 330);
   
             path4.lineTo(230, 330);
   
             path4.lineTo(200, 270);
   
             path4.close();
   
             canvas.drawPath(path4, paint);
   
             Path path5 = new Path();
   
             path5.moveTo(170, 410);
   
             path5.lineTo(230, 410);
   
             path5.lineTo(215, 350);
   
             path5.lineTo(185, 350);
   
             path5.close();
   
             canvas.drawPath(path5, paint);
               
             //第4列
   
             paint.setTextSize(24);
   
             canvas.drawText( "圆形" , 240, 50, paint);
   
             canvas.drawText( "正方形" , 240, 120, paint);
   
             canvas.drawText( "长方形" , 240, 190, paint);
   
             canvas.drawText( "椭圆形" , 240, 250, paint);
   
             canvas.drawText( "三角形" , 240, 320, paint);
   
             canvas.drawText( "梯形" , 240, 390, paint);
   
         }
   
     }

注:文章内容来源网上

转载于:https://my.oschina.net/yolinfeng/blog/408090

Android学习笔记(三):android画图之paint相关推荐

  1. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  2. Android学习笔记(Android Studio)3-3(ProgressBar ProgressDialog)(加载进度条、转圈圈)UI组件之弹出组件

    Android学习笔记3-3 推荐新手向学习视频:B站https://www.bilibili.com/video/av38409964点我传送 3-3 ProgressBar & Progr ...

  3. Android学习笔记(四):android画图之paint之setXfermode

    2019独角兽企业重金招聘Python工程师标准>>> setXfermode 设置两张图片相交时的模式 我们知道 在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状. ...

  4. Android学习笔记三

    大神博客(必看)http://blog.csdn.net/huachao1001/article/list/1 1.Android校招笔记 http://huachao1001.github.io/i ...

  5. ANDROID 学习笔记(三) UI THREAD AsyncTask 使用

    为什么80%的码农都做不了架构师?>>>    一般获取验证码,用户登录验证,上传头像,获取消息,发消息,评论 都可以使用 1.先上官网实例代码 private class Down ...

  6. android java与界面的关联_Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...

    当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...

  7. Android Studio安卓学习笔记(三)Android用户界面的设计布局与组件(一)用户界面布局设计(1)...

    当我们创建了一个安卓项目后,我们会发现真正建立一个完善的安卓项目并不是想象的那么容易.其实和设计GUI可视化界面一样,开发安卓也需要考虑很多方面,主要考虑的还是界面布局和需要的组件. 一:Androi ...

  8. Android学习笔记之Android Studio添加新的Activity

    1.创建Android项目工程:AndroidTest 创建过程可参考网上诸多教程. 2.添加新的Activity,步骤如下 a. 在layout文件夹上右键,New-Activity-相应Activ ...

  9. Android学习笔记之 android:collapseColumns ,android:shrinkColumns 和stretchColumns

    TableLayout是一个使用复杂的布局,最简单的用法就仅仅是拖拉控件做出个界面,但实际上,会经常在代码里使用TableLayout,例如做出表格的效果.本文主要介绍TableLayout的基本使用 ...

最新文章

  1. 她琴棋书画全能,还进入清华计算机系实验室,被赞智商太超群、能力过强悍...
  2. 20190110-用笨办法找到二维矩阵的鞍点
  3. javascript中的for in循环和for循环的使用
  4. 密码技术--国密SM3哈希算法及Go语言应用
  5. python 魔法方法常用_Python魔法方法指南
  6. 看printk引发的一点思考
  7. 太原理工电子信焦工程_电气工程及其自动化专业毕业后做什么工作?近几年就业和收入怎样...
  8. 2017数学建模b题回顾_12月热门文章和2017年回顾
  9. windows更改pip源_windows环境下 更换pip镜像源
  10. php删除数据库数据操作日志文件,MSSQL清空日志删除日志文件
  11. ImportError: DLL load failed: %1 不是有效的 Win32 应用程序
  12. 开源API网关系统:Kong简介
  13. react如何写ajax,请问如何在React中做Ajax 请求?
  14. FileSplit cannot be cast Exception
  15. Nacos 配置中心作用以及使用
  16. LeetCode1156. 单字符重复子串的最大长度
  17. iOS-企业级开发者账号发布流程
  18. 【JavaEE基础与高级 第42章】C3P0连接数据库操作顺序
  19. 机器视觉之eVision
  20. 数据库系统概论(王珊,萨师煊版)范式之前要点一览(简略)

热门文章

  1. 视觉SLAM学习--图像匹配(CVPR2020 Tutorial)
  2. Icarus Verilog与GTKWave简介及其下载安装
  3. MFC与Matlab编程总结 (以《Matlab与C/C++混合编程技术(第三版)》-刘维 第五章 生成DLL为例)
  4. Win32串口操作的技巧
  5. 正则化的通俗解释_干货|深度学习中的正则化技术概述(附Python+keras实现代码)...
  6. python 可变参数 关键字参数_Python之 可变参数和关键字参数
  7. Logica实战与剖析(1)
  8. CodeBlocks 20.03 配置 wxWidgets 3.1.4
  9. Python业务分析实战|共享单车数据挖掘
  10. 只靠开源的时代已经过去,BAT都在这样做!