Android原生绘图工具Paint详细
前言:
生活中绘制图案需要纸和笔,android
中提供了类似的工具Canvas
和Paint
,分别对应画布和画笔。
The Paint class holds the style and color information about how to draw geometries, text and bitmaps.
Paint
拥有绘制几何图形、文本、图片的样式和颜色信息。
The Canvas class holds the "draw" calls. To draw something, you need 4 basic components: A Bitmap to hold the pixels, a Canvas to host the draw calls (writing into the bitmap), a drawing primitive (e.g. Rect, Path, text, Bitmap), and a paint (to describe the colors and styles for the drawing).
Canvas
拥有绘图的请求权,想要完成绘制,需要4个基本元素:保存像素的Bitmap
、一个可以调用draw
方法的canvas
、要绘制的内容描述、一个画笔。凭借这4个元素就可以绘制到一个bitmap
上,然后渲染到屏幕上。
1.简介
今天先将一下Paint的相关内容。Paint提供了三种初始化方法:
Paint() Paint(int flag) Paint(Paint paint)
2.基本属性使用
2.1 setAlpha透明度
setAlpha(int a) 设置范围0~255
2.2 setStyle填充样式
填充样式表示绘线和填充的选择:
Paint.Style.FILL Paint.Style.FILL_AND_STROKE Paint.Style.STROKE
2.3 颜色,字体,对齐,抗锯齿
setColor
,setARGB
设置颜色,设置画笔的颜色,
setARGB()
参数范围0-255。
setAntiAlias(boolean)
抗锯齿,使边界更顺滑(有些屏幕分辨率不高,导致像素点比较大,绘制边界可能会有颗粒感,打开抗锯齿边界颗粒感会减少)。
setTextSize(float textSize)
字体大小,单位是px,如果是dp要注意转换。
setTextAlign(Paint.Align.RIGHT)
设置字体对齐方式,根据下面的实例可以,对齐方式基于开始绘制的点。
mTextPaint.setTextAlign(Paint.Align.LEFT); canvas.drawText("MatumbaMan的博客",200, 200, mTextPaint); mTextPaint.setTextAlign(Paint.Align.RIGHT); canvas.drawText("MatumbaMan的博客",200, 300, mTextPaint); mTextPaint.setTextAlign(Paint.Align.CENTER); canvas.drawText("MatumbaMan的博客",200, 400, mTextPaint);
2.4 setShadowLayer 阴影
setShadowLayer(float radius, float dx, float dy, int shadowColor) 设置阴影
Radius
设置角度,dx,dy控制字体的上下左右出现,有正负之分,dx的正负代表右左,dy的正负代表下上。
mTextPaint.setTextAlign(Paint.Align.LEFT); mTextPaint.setShadowLayer(10, -20, 40, Color.GRAY); canvas.drawText("MatumbaMan的博客",200, 200, mTextPaint); mTextPaint.setTextAlign(Paint.Align.RIGHT); canvas.drawText("MatumbaMan的博客",200, 300, mTextPaint); mTextPaint.setTextAlign(Paint.Align.CENTER); canvas.drawText("MatumbaMan的博客",200, 400, mTextPaint);
2.5 setStrokeCap
setStrokeCap(Paint.Cap.ROUND)设置绘制起始点和结尾点的样式,
三种样式ROUND
,BUTT
,SQUARE
、
Cap.ROUND(圆形)
Cap.SQUARE(方形)
Paint.Cap.BUTT(无)
Path path = new Path(); path.moveTo(100, 100); path.lineTo(100, 200); path.lineTo(200, 300); canvas.drawPath(path, mPaint2);//无 path.reset(); path.moveTo(300, 100); path.lineTo(300, 200); path.lineTo(400, 300); mPaint2.setStrokeCap(Paint.Cap.ROUND);//圆 canvas.drawPath(path, mPaint2); path.reset(); path.moveTo(500, 100); path.lineTo(500, 200); path.lineTo(600, 300); mPaint2.setStrokeCap(Paint.Cap.SQUARE);//方 canvas.drawPath(path, mPaint2);
2.6 setStrokeJoin
setStrokeJoin(Paint.Join join),设置绘制path连接点的样式
Join.MITER(结合处为锐角)
Join.Round(结合处为圆弧)
Join.BEVEL(结合处为直线)
Path path = new Path(); path.moveTo(100, 100); path.lineTo(100, 200); path.lineTo(200, 300); mPaint2.setStrokeJoin(Paint.Join.MITER); canvas.drawPath(path, mPaint2); path.reset(); path.moveTo(300, 100); path.lineTo(300, 200); path.lineTo(400, 300); mPaint2.setStrokeJoin(Paint.Join.ROUND); canvas.drawPath(path, mPaint2); path.reset(); path.moveTo(500, 100); path.lineTo(500, 200); path.lineTo(600, 300); mPaint2.setStrokeJoin(Paint.Join.BEVEL); canvas.drawPath(path, mPaint2);
到此这篇关于Androi
原生绘图工具Paint
的文章就介绍到这了,更多相关Android
原生绘图Paint
内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Android下拉刷新PtrFrameLayout的使用实例代码
本篇文章主要介绍了Android下拉刷新PtrFrameLayout的使用实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-06解决android studio android monitor打不开的问题
下面小编就为大家分享一篇解决android studio android monitor打不开的问题,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-01-01android串口开发入门之搭建ndk开发环境及第一个jni调用程序
这篇文章主要给大家介绍了关于android串口开发入门之搭建ndk开发环境及第一个jni调用程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。2018-01-01Android使用ViewPager实现类似laucher左右拖动效果
这篇文章主要为大家详细介绍了Android使用ViewPager实现类似laucher左右拖动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-05-05Android GestureDetector实现手势滑动效果
这篇文章主要为大家详细介绍了Android GestureDetector实现手势滑动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-05-05
最新评论