文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android中Canvas的常用方法总结

2022-06-06 07:37

关注

一、对Canvas进行操作

对Canvas的一系列操作,是指对Canvas进行旋转、平移、缩放等操作。

这些操作可以让Canvas对象使用起来更加便捷。

二、Canvas平移



 canvas.translate(100, 50);

三、Canvas缩放



canvas.scale(2, 4);

canvas.scale(2, 4,100,100);


四、Canvas旋转



canvas.rotate(30);

canvas.rotate(30,100,100);


五、Canvas操作例子


 Paint p = new Paint();
 p.setColor(Color.argb(50,255,100,100));
 canvas.drawRect(0,0,200,200,p); // 以原始Canvas画出一个矩形1
 canvas.translate(300,300); // 将Canvas平移 (100,100)
 p.setColor(Color.argb(50,100,255,100));
 canvas.drawRect(0,0,200,200,p); // 矩形2
 canvas.rotate(30); //将Canvas旋转30
 p.setColor(Color.argb(50,100,0,255));
 canvas.drawRect(0,0,200,200,p); // 矩形3
 canvas.scale(2, 2); // 将Canvas以原点为中心,放大两倍
 p.setColor(Color.argb(50,255,255,0));
 canvas.drawRect(0,0,200,200,p); // 矩形4

六、Canvas保存和还原

Canvas提供了几个方法,让我们可以方便的对Canvas的状态进行更改和还原。

这些方法是:

save() 
restore() 
restoreToCount(int saveCount)

我们在对Canvas进行平移、旋转、放大等操作时候,可以调用

save()
方法,将当前修改过的Canvas状态进行保存,调用
restore() 
方法后,会将Canvas还原成最近的一个
save() 
的状态。

save()
方法还会有一个返回值,我们也可以调用
restoreToCount(int saveCount)
方法,将这个返回值作为参数传递进去,就可以将Canvas还原成某一个特定的
save()
状态。


 canvas.translate(100,100); // 平移(100,100)
 int save1 = canvas.save(); // 保存Canvas状态(状态1)
 canvas.scale(2, 2); // 放大2倍
 int save2 = canvas.save(); // 保存Canvas状态(状态2)
 canvas.restore(); // 返回最新的save状态,即状态2
 canvas.restoreToCount(save1);// 手动指定的返回到 状态1

六、Canvas画图实例

1、画文字


 
canvas.drawText("开始写字了!",50, 50, p);// 画文本 
 
canvas.drawText("开始写字了!",2,5, 50, 50, p);// 画文本,结果为:“写字了” 
 
canvas.drawTextOnPath("1234567890101123123", path, 0, -50, p);

2、画圆


   
canvas.drawCircle(200, 200, 100, p);

3、画线


 
canvas.drawLine(100, 100, 300, 300, p);// 画线 
 
canvas.drawLines(new float[]{100,100,200,200,200,100,300,100}, p);

4、画椭圆


 
RectF oval = new RectF(150, 200, 500, 400);// 画一个椭圆 
canvas.drawOval(oval, p);

5、画弧度


 
canvas.drawArc(oval, 20, 180, false, p);

6、矩形


 
canvas.drawRect(100,100, 200, 200, p); 
//画圆角矩形 
RectF oval3 = new RectF(80, 260, 200, 300);// 设置个新的长方形 
canvas.drawRoundRect(oval3, 20, 5, p);//第二个参数是x半径,第三个参数是y半径

7、多边形


 
Path path = new Path(); // 路径对象 
path.moveTo(80, 200);// 此点为多边形的起点 
path.lineTo(120, 250); 
path.lineTo(80, 250); 
//.... 可以添加多个点。构成多边形 
path.close(); // 使终点和起点链接,构成封闭图形 
  canvas.drawPath(path, p);

8、画贝塞尔曲线


p.setStyle(Style.STROKE); 
Path path2=new Path(); 
path2.moveTo(100, 100);//设置Path的起点 
 
path2.quadTo(300, 100, 400, 400); //设置贝塞尔曲线的控制点坐标和终点坐标 
path2.quadTo(500, 700, 800, 800); 
canvas.drawPath(path2, p);//画出贝塞尔曲线

9、画点


 
canvas.drawPoint(60, 390, p);//画一个点 
 
canvas.drawPoints(new float[]{60,400,65,400,70,400}, p);//画多个点

10、画图片


Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
 
canvas.drawBitmap(bitmap, 200,300, p);

七、总结

以上就是这篇文章的全部内容,希望对大家的学习或者工作能有一定的帮助,如果有疑问可以留言留言。

您可能感兴趣的文章:Android实现渐变色的圆弧虚线效果Android TextView(圆弧)边框和背景实例详解Android 自定View实现仿QQ运动步数圆弧及动画效果Android使用ImageView 制作透明圆弧实例代码Android 游戏开发之Canvas画布的介绍及方法Android开发之图形图像与动画(一)Paint和Canvas类学习Android使用Canvas绘制圆形进度条效果Android中Paint类和Canvas类的方法汇总Android 中View.onDraw(Canvas canvas)的使用方法利用Android画圆弧canvas.drawArc()实例详解


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯