Android Canvas的常用方法

Android Canvas方法总结最全面详解API(小结) 本篇文章主要介绍了Android Canvas方法总结最全面详解API,分享给大家,具体如下: 常用方法 drawXxx方法族:以一定的坐标值在当前画图区域画图,另外图层会叠加, 即后面绘画的图层会覆盖前面绘画的图层。 clipXXX方法族:在当前的画图区域裁剪(clip)出一个新的画图区域,这个 画图区域就是canvas对象的当前画图区域了。比如:clipRect(new Rect()), 那么该矩形区域就是canvas的当前画图区域 getXxx方法族:获得与Canvas相关一些值,比如宽高,屏幕密度等。 save(),restore(),saveLayer(),resto 立即下载
我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API。也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制。


这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图。两种的主要是区别就是可以在SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。前面一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;而后一种主要用在游戏,高品质动画方面的画图。


Paint 代表了Canvas上的画笔、画刷、颜料等等;
Paint类常用方法:
setARGB(int a, int r, int g, int b) // 设置 Paint对象颜色,参数一为alpha透明值
setAlpha(int a) // 设置alpha不透明度,范围为0~255
setAntiAlias(boolean aa) // 是否抗锯齿
setColor(int color)  // 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义
setTextScaleX(float scaleX)  // 设置文本缩放倍数,1.0f为原始
setTextSize(float textSize)  // 设置字体大小
setUnderlineText(booleanunderlineText)  // 设置下划线


// 1、将会以颜色ARBG填充整个控件的Canvas背景
//mCanvas.drawARGB(122, 10, 159, 163) ;
// 2、将会以颜色ARBG填充整个控件的Canvas背景
//mCanvas.drawColor(Color.BLUE) ;
// 3、绘制颜色,但是要制定一个mode
//mCanvas.drawColor(Color.BLUE, Mode.SCREEN) ;
// 4、画背景,跟2等效
//mCanvas.drawPaint(mPaint) ;
// 5、画一个点
//mCanvas.drawPoint(23, 23, mPaint) ;
// 6、画很多点这里的float[] 表示{x0,y0,x1,y1,x2,y2,x3,y3.....}
//mCanvas.drawPoints(new float[]{10,11,10,12,10,13,10,14,10,15,10,16}, mPaint) ;
// 7、画线
//mCanvas.drawLine(...) ;
// 8、画长方形  Rect 和RectF的区别?
//精度不一样,Rect是使用int类型作为数值,RectF是使用float类型作为数值
//Rect r = new Rect(10,10,50,50) ;
//mCanvas.drawRect(r, mPaint) ;
//RectF rf = new RectF(10,10,50,50) ;
//mCanvas.drawRect(rf, mPaint) ;
//mCanvas.drawRect(10, 10, 50, 50, mPaint) ;
// 9、画椭圆 初始化RectF的参数是(left,top,right,bottom)
//RectF rf = new RectF(100,100 ,200 ,250) ;
//mCanvas.drawOval(rf, mPaint) ;
// 10、画圆 (圆心x0,圆心y0,半径,paint)
//mCanvas.drawCircle(100, 100, 50, mPaint) ;
// 11、画圆弧 RectF对象表明内切矩形的(left,top,right,bottom)
//RectF rf = new RectF(100 ,100 ,200 ,200) ;
// 参数(rf,startAngle ,angle ,sweepAngle ,paint) sweepAngle表明是否显示圆弧三角形 angle画多少度
//mCanvas.drawArc(rf, 60, 30, true, mPaint) ;
// 12、绘制圆角矩形 RectF是矩形的(left,top,right,bottom)
//RectF rf = new RectF(100 ,100 ,200 ,200) ;
// 50表明x方向的半径,20表示y方向的半径
//mCanvas.drawRoundRect(rf, 50, 20, mPaint) ;
// 13、画任意多边形
//Path path = new Path() ;
//path.moveTo(100, 100) ;
//path.lineTo(200, 200) ;
//path.lineTo(300, 200) ;
//mCanvas.drawPath(path, mPaint) ;
// 14、通过Path对象,也可以画其他的图形
//Path path = new Path() ;
//path.addCircle(100, 100, 20, Path.Direction.CCW) ;
//mCanvas.drawPath(path ,mPaint);

/*drawBitmap
drawText
drawPicture*/

/*Rect r = new Rect(100,100,200,200) ;
ByteArrayOutputStream out = new ByteArrayOutputStream();  
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) ;
InputStream in = new ByteArrayInputStream(out.toByteArray()) ;
*/
/*Picture picture = Picture.createFromStream(mContext.getResources().openRawResource(R.raw.bg)) ;
mCanvas.drawPicture(picture) ;*/

// 15、画bitmap对象
//mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg),100, 100, mPaint) ;

// 16、Matrix中包含了对Bitmap的处理操作
/*Matrix m = new Matrix() ;
m.postScale(2, 2) ;
m.postRotate(60) ;
mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg), m, mPaint) ;*/

// 17、画带Matrix参数的bitmap,经过Matrix对象可以对bitmap做相关的处理,比如旋转,缩放,移动等《关于Matrix的使用另行总结》
/*Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;
Matrix m = new Matrix() ;
m.postScale(2, 2) ;
m.postRotate(60) ;
m.postTranslate(300, 300) ;
mCanvas.drawBitmap(bitmap, m, mPaint) ;*/
//mCanvas.drawBitmap(....) ; 暂不总结
// 18、画文字
//mCanvas.drawText("123", 10, 10, mPaint) ;

//mCanvas.drawText(....) ; 暂不总结

关于抽奖转盘的绘制,请参见:http://blog.youkuaiyun.com/lmj623565791/article/details/41722441 

脆弱的冗余:链路聚合(LACP)中单条链路故障引发的网络震荡 show etherchannel summary# 查看聚合组中所有端口的标志位,健康状态应为 ‘P’ (Port-channel) 或 ‘SU’(Stand-up)。本次故障的核心教训是:网络系统对“部分故障”的容忍度和自愈能力,远比应对“完全故障”要重要和复杂得多。3.加强监控:部署网管系统,监控聚合端口的包错误计数、LACP状态变化频率,并设置阈值告警。标签: #链路聚合 #LACP故障 #网络冗余 #排障案例 #网络高可用性。修复链路:更换光模块、清洁光纤接口、检查物理线路。 阅读详情

相关推荐

S32K144 ADC硬件触发实战:PDB与TRGMUX配置避坑指南

本文深入解析了S32K144微控制器中ADC硬件触发的两种核心方案:PDB与TRGMUX。通过对比其架构差异、详细配置流程及常见问题排查,提供了从寄存器操作到DMA联动的完整优化指南,旨在帮助开发者解决多通道采样时序不稳、CPU负载过高等实际难题,实现高效稳定的数据采集。

weixin_29168153的博客 440

在Android中实现图片缩放和旋转

图片处理在程序开发中也是经常用到的,手机上面经常就有图片浏览器,能将图片放大显示也能将图片显示为缩略图,同时也可以将图片竖着看或者横着看。这些都需要对图片进行处理,让其能够缩放和旋转。下面来看看Android中处理图片缩放和旋转的步骤。 Matrix是在Android中用于操作图像的类,这个类中postScale和postRotate和分别实现图片缩放和旋转,具体步骤如下:...

bahuichi7533的博客 403

【全新官方接口】php检测微信域名拦截,检测微信域名被封

你的域名在微信被拦截的3种常见情况 1、域名因违规或有风险被拦截(红色拦截) 2、类似taobao.com,douyin.com这种的恶意竞争式拦截,淘宝、抖音等微信的竞争对手一般都是白色拦截(白色拦截) 3、有一个中间页的拦截,需要多次点击按钮才可以跳转到你的域名的,多是一些新型域名后缀,例如.top .xyz .link后缀,这种情况,备案后可以解决(备案拦截) 通过php get_headers()函数就可以分析到结果 这个下标为6是一个URL,在微信访问后正是这个讨厌的页面! 如果切换为

TANKING,开源开发者! 2875

Android Canvas类

1. Canvas类 Canvas主要用于2D绘图,它提供了很多相应的drawXxx()方法,Canvas的获取方式有三种 重写View的onDraw(Canvas)方法 @Override protected void onDraw(Canvas canvas) { } SurfaceView通过lockCanvas()方法获取Canvas @Override ...

假装你是大灰狼的专栏 2062

推荐系统:NDCG评价指标及其Python实现方法

除了推荐任务,在二分类任务中,也可以计算该指标,代码如下: # ndcg def get_dcg(y_pred, y_true, k): #注意y_pred与y_true必须是一一对应的,并且y_pred越大越接近label=1(用相关性的说法就是,与label=1越相关) df = pd.DataFrame({"y_pred":y_pred, "y_true":y_true}) ...

lanyuelvyun的博客 8241

YOLOv8模型INT8量化实战:解决sigmoid输出归零的坑(附代码修改)

本文详细介绍了YOLOv8模型INT8量化过程中遇到的sigmoid输出归零问题及其解决方案。通过修改模型导出代码、优化ONNX量化流程,并提供完整的部署优化技巧,帮助开发者在边缘计算设备上实现高效的模型推理。文章还包含量化效果验证和常见问题排查方法,助力开发者快速解决实际部署中的难题。

vvv99的博客 252

Canvas Api(全)

Canvas API ctx.moveTo(100,100) 参数 x 横坐标 y 竖坐标 作用 将画笔移动到坐标中的某个点 ctx.lineTo(100,100) 参数 x 横坐标 y 竖坐标 作用 将画笔从它所在的点到另一个点用线连接 ctx.stroke() 参数 作用 画 ctx.strokeStyle (‘red’) 参数 色值 作用 画笔颜色 ctx.beginPath() 参数 作用 开始使用一只新的画笔,防止之前的画笔的各种属性污染到新的图 ctx.closePath() 参数

Big_YiFeng的博客 4155

【Java基础知识 19】Java接口的作用和意义

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

学Java,找哪吒 2万+

Canvas的基本使用

(一)Canvas上的图形绘制 RectF mArcRect=new RectF(0,0,300,300); 1.绘制画布带透明度的颜色值 canvas.drawARGB(255,255,0,0); canvas.drawColor(Color.RED); 2.绘制矩形 canvas.drawRect(mArcRect,mPaint); canvas.drawRoundRect(mArcRect,...

SpringQi 1406

基于深度学习YOLOv10的障碍物检测系统

为了方便用户使用,我们将开发一个图形用户界面(GUI),允许用户上传图像或视频流并查看检测结果。我们使用PySide6开发GUI界面,它是Qt框架的Python绑定,适用于开发跨平台的桌面应用程序。本文详细介绍了如何基于YOLOv10模型构建一个障碍物检测系统,包括数据集准备、模型训练和推理到图形用户界面的开发。通过这一系统,用户可以方便地上传图像或视频流并进行障碍物检测,广泛应用于自动驾驶、机器人导航等领域。

斌擎科技 1052

电子电器架构 --- OEM企标中规定ECU启动时间的目的

电子电器架构 --- OEM企标中规定ECU启动时间的目的

Soly_kun的博客 223

android canvas常用的方法解析(一)

android canvas常用的方法解析

zhouguizhi 9361

机器人的“大脑”进化论:从专用控制器到高性能SoC的异构计算时代

摘要:随着AI与机器人技术融合,高性能芯片成为机器人智能化的关键。本文分析了机器人对芯片的核心需求,包括多模态数据处理、实时控制和智能决策能力。系统级芯片(SoC)因集成CPU、GPU/NPU等模块而成为主流选择。市场呈现分层格局:中低端设备(如扫地机器人)采用"MCU+轻量SoC"方案,满足基础功能;高端机器人则依赖"高性能SoC+独立GPU"处理复杂任务。除主控芯片外,完整的机器人系统还需传感器接口、驱动、通信等配套芯片。未来,芯片技术的进步将持续推动机器人智能化

致力于lidar应用开发 82

Android中Canvas的常用方法

所有View在UI上绘制全部是由Canvas实现的。     一. save(),restore()  保存和还原               这两个方法并不是用来对图形进行处理的(移动,旋转,缩放)。但却是绘制复杂图形必不可少的方法。               save();               方法作用:用来保存canvas状态的。            restore()

米小豆的博客 487

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android之Canvas浅谈常用几个方法

canvas APi详解

小钟的专栏 1830

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android canvas draw常用方法收集

Android canvas draw常用方法收集 1.drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint) 参数 RectF oval 外切矩阵 float startAngle 开始角度 float sweepAngle 结束的角度 boolean useCenter 可以理解是否是封闭的圆弧 关于角度 起点3点钟方向(0度) 顺时针方向;6点是90度,9点是180度 以此类推…

caobin_study的博客 649

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android canvas 常用的一些方法总结

android canvas 的应用

sx2358的博客 852

Android中canvas常用方法

在自定义VIew中经常使用到Canvas对象的方法: 1 绘制点: public void drawPoint(float x, float y,  Paint paint) x:表示x轴方法的坐标 y:表示y轴方法的坐标  这坐标是相对于它的父view,而不是屏幕 paint:表示你所画点用到的画笔 public void drawPoints(float[] pts

Android 818

android画布设置最外层,Android中Canvas的常用方法总结

一、对Canvas进行操作对Canvas的一系列操作,是指对Canvas进行旋转、平移、缩放等操作。这些操作可以让Canvas对象使用起来更加便捷。二、Canvas平移/*** 画布向(100,50)方向平移** 参数1: 向X轴方向移动100距离* 参数2: 向Y轴方向移动50距离*/canvas.translate(100, 50);三、Canvas缩放/*** 在X轴方向放大为原来2倍,Y轴...

weixin_39913141的博客 587

Android中Canvas的常用方法总结

一、对Canvas进行操作 对Canvas的一系列操作,是指对Canvas进行旋转、平移、缩放等操作。 这些操作可以让Canvas对象使用起来更加便捷。 二、Canvas平移 ? 1 2 3 4 5 6 7 /**  * 画布向(100,50)方向平移  *  * 参数1: 向X轴方向移动100距离

feelinghappy的专栏 535

Android Canvas 常用 类 方法 总结

Canvas类常用的方法: drawRect(RectF rect, Paint paint) //绘制区域,参数一为RectF一个区域  drawPath(Path path, Paint paint) //绘制一个路径,参数一为Path路径对象 drawBitmap(Bitmap bitmap, Rect src, Rect dst, Pa

q15591的博客 349

Android Canvas类 详解

Android Canvas类 详解Canvas对象的获取方式有两种Canvas对象常用的方法 Canvas对象的获取方式有两种 通过重写View.onDraw方法,View中的Canvas对象会被当做参数传递过来,我们操作这个Canvas,效果会直接反应在View中。 另一种就是使用构造方法创建一个Canvas对象 Canvas(Bitmap bitmap) 例:Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); Can

weixin_45558166的博客 1013

Android中一些常用类的常用方法(Math、Random、Color、Paint、Canvas、Bitmap、BitmapFactory)

1.java.lang.Math类常用的常量和方法: Math.PI 记录的圆周率 Math.E 记录e的常量 Math.abs 求绝对值 Math.sin 正弦函数 Math.asin 反正弦函数 Math.cos 余弦函数 Math.acos 反余弦函数 Math.tan 正切函数 Math.atan 反正切函数 Math.atan2 商的反正切函数 Math.to

Liyunlong 1518

android 自定义View Canvas类常用方法

Canvas类常用方法 drawLine()绘制线条 public void drawLine(float startX, float startY, float stopX, float stopY, @NonNull Paint paint) { super.drawLine(startX, startY, stopX, stopY, paint); ...

only95 607

Android中Canvas和Paint的常用方法

源文件:http://blog.sina.com.cn/s/blog_6a528c550102uwv2.html Canvas: void drawRect(RectF rect, Paint paint) //绘制区域,参数一为RectF一个区域 void drawPath(Path path, Paint paint) //绘制一个路径,参数一为Path路

z13991886997的专栏 748
上一篇: Android应用开发使用第三方字体
下一篇: 报数问题
杜小东
博客等级 码龄16年 45粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值