返回顶部
首页 > 资讯 > 精选 >Android如何利用Flutter path绘制粽子
  • 934
分享到

Android如何利用Flutter path绘制粽子

2023-06-30 18:06:31 934人浏览 泡泡鱼
摘要

本文小编为大家详细介绍“Android如何利用Flutter path绘制粽子”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android如何利用Flutter path绘制粽子”文章能帮助大家解决疑惑,下面跟着小编的

本文小编为大家详细介绍“Android如何利用Flutter path绘制粽子”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android如何利用Flutter path绘制粽子”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

绘制

基本轮廓

首先我们需要将粽子的基本轮廓绘制出来,通过图片可以看到粽子的轮廓是一个圆圆的三角形状,

本篇文章所有的图形都是用纯Path路径制作,这里我们可以将粽子的轮廓分为三个二级贝塞尔曲线来进行绘制,头、左右粽叶轮廓。

核心代码:

canvas.translate(size.width / 2, size.height / 2);canvas.translate(-50, -50);Paint paint = Paint()  ..style = PaintingStyle.stroke  ..strokeWidth = 2  ..color = Colors.black  ..isAntiAlias = true;Path path = Path();path.relativeQuadraticBezierTo(50, -80, 100, 0);path.relativeQuadraticBezierTo(90, 130, -50, 130);path.relativeQuadraticBezierTo(-140, 0, -50, -130);path.close();canvas.drawPath(path, paint);

效果图:

Android如何利用Flutter path绘制粽子

粽叶

有了基本轮廓,接下来我们需要绘制粽叶,可以看到粽叶的形状是一个不规则的形状,这里可以使用Path路径联合,两个路径生成一个新的路径,这样我们就可以得到左边粽叶的区域, 核心代码:

Path path3 = Path();path3.relativeQuadraticBezierTo(60, 100, 190, 130);path3.relativeLineTo(0, 40);path3.relativeLineTo(-260, 0);path3.relativeLineTo(0, -200);path3.close();canvas.drawPath(   path3,   paint     ..color = Color(0xFF2A9200));

效果图:

Android如何利用Flutter path绘制粽子

然后使用路径联合取这两个区域的交集,即可得到粽叶左边的区域。

核心代码:

Path pathStart = Path.combine(PathOperation.intersect, path, path3);pathStart.close();canvas.drawPath(   pathStart,   paint     ..color = Color(0xFF2A9200)     ..style = PaintingStyle.fill);

效果图:

Android如何利用Flutter path绘制粽子

有了区域以后,我们需要再来点纹路,看起来更像粽叶,这里继续使用路径联合,我们只需要将上方我们合成的新路径向左下方偏移多次即可。 核心代码:

_canvasStartLines(Canvas canvas, Path pathStart, Paint paint) {  for (int i = 1; i < 10; i++) {    Path path = Path();    path.moveTo(-8 * i.toDouble(), 8 * i.toDouble());    path.relativeQuadraticBezierTo(60, 100, 190, 130);    path.relativeLineTo(0, 60);    path.relativeLineTo(-300, 0);    path.relativeLineTo(0, -200);    path.close();    canvas.drawPath(        Path.combine(PathOperation.intersect, pathStart, path),        paint          ..color = Colors.black          ..style = PaintingStyle.stroke);  }}

效果图:

Android如何利用Flutter path绘制粽子

接下来右边粽叶同理:核心代码这里就不贴了,

效果图:

Android如何利用Flutter path绘制粽子

粽叶基本就完成啦。

嘴巴

嘴巴我们就用一个三阶贝塞尔曲线闭合绘制一个开心的表情。

核心代码:

Path path5 = Path();path5.moveTo(40, 20);path5.relativeCubicTo(2, 18, 18, 18, 20, 0);path5.close();canvas.drawPath(path5, paint..color = Colors.black87);

效果图:

Android如何利用Flutter path绘制粽子

眼睛

眼睛我们也用两个三阶贝塞尔曲线,开心的样子。

/// 眼睛Path path6 = Path();path6.moveTo(20, 5);path6.relativeCubicTo(5, -10, 15, -10, 20, 0);canvas.drawPath(    path6,    paint      ..color = Colors.black87      ..style = PaintingStyle.stroke);canvas.save();canvas.translate(40, 0);canvas.drawPath(    path6,    paint      ..color = Colors.black87      ..style = PaintingStyle.stroke);canvas.restore();

效果图:

Android如何利用Flutter path绘制粽子

腮红

接下来给面部设置下肤色,然后添加一点点细节。这里我们给path路径添加一个椭圆点缀那么一下。 核心代码:

/// 晒红Path path9 = Path();path9.addArc(Rect.fromCenter(center: Offset(30,30), width: 4, height: 6),0,pi*2);canvas.drawPath(path9, paint..color = Color(0xFFFFA2AE)..style = PaintingStyle.fill);canvas.save();canvas.translate(6, 0);canvas.drawPath(path9, paint..color = Color(0xFFFFA2AE)..style = PaintingStyle.fill);canvas.restore();canvas.save();canvas.translate(34, 0);canvas.drawPath(path9, paint..color = Color(0xFFFFA2AE)..style = PaintingStyle.fill);canvas.restore();canvas.save();canvas.translate(40, 0);canvas.drawPath(path9, paint..color = Color(0xFFFFA2AE)..style = PaintingStyle.fill);canvas.restore();

效果图:

Android如何利用Flutter path绘制粽子

手&脚

看着光溜溜的没有手脚怎么行,接下来我们继续使用path路径给粽子添加手脚,这里有一个知识点就是我们需要找到手脚的位置坐标在哪,就需要使用到 path的路径测量 ,根据路径上的点找到我们合适的手脚位置。

通过path.computeMetrics()我们可以得到一个路径的迭代对象PathMetric() ,这个迭代对象里面包含这个路径所有图形的很多信息,我们都可以从这个对象得到,这里我们从粽叶路径中得到我们的手脚的坐标点。绘制手脚, 这里只贴了左手的代码,其他同理。

核心代码:

///粽叶路径///左边var pms = pathStart.computeMetrics();var first = pms.first;var offsetStart = first.getTangentForOffset(first.length * 0.55)!;/// 手Path path7 = Path();path7.moveTo(offsetStart.position.dx, offsetStart.position.dy);path7.relativeLineTo(-30, 20);path7.relativeLineTo(-5, -30);/// 左手canvas.drawPath(    path7,    paint      ..color = Colors.black      ..style = PaintingStyle.stroke      ..strokeWidth = 3);

效果图:

Android如何利用Flutter path绘制粽子

头巾

粽子有了,接下来给粽子来个标记,我是甜粽子还是咸粽子,毕竟有人爱吃咸粽子,有人爱吃甜粽子, 这里我们用路径绘制一个头绳,然后在头绳中间对标记粽子的咸甜。

这里知识点需要掌握绘制文字,核心代码:

Path path7 = Path();path7.moveTo(0, -50);path7.quadraticBezierTo(50, 10, 100, -50);canvas.drawPath(    Path.combine(PathOperation.intersect, path, path7),    paint      ..color = Colors.pink      ..style = PaintingStyle.stroke);var textPainter = TextPainter(    text: TextSpan(        text: "甜", style: TextStyle(fontSize: 16, color: Colors.white)),    textDirection: TextDirection.ltr);textPainter.layout();var size2 = textPainter.size;canvas.drawCircle(    Offset(50, -20),    size2.width,    paint      ..color = Colors.pink      ..style = PaintingStyle.fill);textPainter.paint(    canvas, Offset(-size2.width / 2, -size2.height / 2).translate(50, -20));

效果图:

Android如何利用Flutter path绘制粽子

咸甜是一家

有甜粽子那也得有咸粽子不是,我们只需将上面粽子的代码复制,改下文字就可以制作一个咸粽子啦。 效果图:

Android如何利用Flutter path绘制粽子

背景有点空,再加个背景图:

Android如何利用Flutter path绘制粽子

发声

粽子制作完成,接下来我们需要让粽子会说话,这里我使用的讯飞的语音合成webapi流式传输数据,将文本转化为音频文件实时播放,只需要调用接口即可将文本转化为音频文件播放,这里需要WEB_Socket_channel插件来和讯飞进行websocket连接,这样做的好处是不需要集成任何sdk,只需要通过api接口就可以实时转换

Android如何利用Flutter path绘制粽子

web_socket_channel的简单使用:创建连接:

Android如何利用Flutter path绘制粽子

发送消息方法:_channel?.sink.add(data);在listen监听接收信息。

这里简单的介绍下,具体讯飞 Flutter API版本的实现步骤以及WebSocket后面我会单独整理进行分享。

动画控制嘴巴开合

这里我们就让甜粽子为我们讲解,动画绘制之间的配合使用之前的文章介绍过多次,这里就不再过多介绍,直接看效果吧。

嘴巴张合运动曲线:

Android如何利用Flutter path绘制粽子

身体也加一个默认的运动曲线。

效果图:

Android如何利用Flutter path绘制粽子

加上科普文章,加上声音。

Android如何利用Flutter path绘制粽子

这里我们使用童声豆豆的声音,

Android如何利用Flutter path绘制粽子

设置到这里即可。 示例代码之后会整理上传到github上。

Android如何利用Flutter path绘制粽子

用到的技术点

绘制:path路径、贝塞尔曲线、路径联合、路径测量、路径添加图形、绘制文字、绘制图片域。

动画:多动画与绘制联合使用。

通信:web_socket_channel 的使用。

文件操作:插件 path_provider 写入文件。

播放音频操作:插件 audioplayers 播放音频。

读到这里,这篇“Android如何利用Flutter path绘制粽子”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Android如何利用Flutter path绘制粽子

本文链接: https://lsjlt.com/news/330556.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android如何利用Flutter path绘制粽子
    本文小编为大家详细介绍“Android如何利用Flutter path绘制粽子”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android如何利用Flutter path绘制粽子”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-30
  • Android利用Flutter path绘制粽子的示例代码
    目录前言绘制基本轮廓粽叶嘴巴眼睛腮红手&脚头巾咸甜是一家发声动画控制嘴巴开合用到的技术点总结前言 大家好,端午将至,首先提前祝小伙伴端午安康,端午作为中华民族的非常重要...
    99+
    2022-06-07
    path 示例 flutter Android
  • Android如何利用控制点的拖拽画一个粽子
    本文小编为大家详细介绍“Android如何利用控制点的拖拽画一个粽子”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android如何利用控制点的拖拽画一个粽子”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实现逻...
    99+
    2023-06-30
  • Android利用控制点的拖拽画一个粽子
    目录前言实现逻辑应用总结前言 上一篇我们通过Listener获取触控点的位置作为贝塞尔曲线的控制点,实现曲线的交互式绘制。不过,上一篇有个缺陷,控制点绘制完成后只能撤销,没法修改,如...
    99+
    2024-04-02
  • Android Flutter利用CustomPaint绘制基本图形的方法
    今天小编给大家分享一下Android Flutter利用CustomPaint绘制基本图形的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2023-07-02
  • Android利用HelloChart绘制曲线
    本文实例为大家分享了Android利用HelloChart绘制曲线的具体代码,供大家参考,具体内容如下 1、将jar包放到app下的libs文件夹中 2、build.gradle(a...
    99+
    2024-04-02
  • css如何使用clip-path绘制三角形
    这篇文章主要为大家展示了“css如何使用clip-path绘制三角形”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何使用clip-path绘制三角形”这...
    99+
    2024-04-02
  • 如何在Android中利用Drawable绘制一个圆角
    如何在Android中利用Drawable绘制一个圆角?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 创建类RoundCircleDrawable继承Drawablepub...
    99+
    2023-05-30
    android drawable
  • Android利用Canvas类绘制图形
    本文实例为大家分享了Android利用Canvas类绘制图形的具体代码,供大家参考,具体内容如下 首先介绍一下相关基础知识。 1.画笔(paint) 1.1、作用:画笔对象通过属性来...
    99+
    2024-04-02
  • 如何利用OpenLayer绘制扇形
    今天小编给大家分享一下如何利用OpenLayer绘制扇形的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。创建openlayer...
    99+
    2023-06-30
  • Flutter利用Canvas绘制精美表盘效果详解
    目录前言初始化面板刻度刻度线刻度值指针时针分针秒针动起来前言 趁着周末空闲时间使用 Flutter 的 Canvas制作了一个精美表盘。 最终实现的效果还不错,如下: 前面说到使用...
    99+
    2024-04-02
  • Android View如何绘制
    上文说道了Android如何测量,但是一个漂亮的控件我只知道您长到哪儿,这当然不行。只需要简单重写OnDraw方法,并在Canvas(画布)对象上调用那根五颜六色的画笔就能够画...
    99+
    2022-06-06
    view Android
  • 如何利用css绘制三角形
    这篇文章给大家分享的是有关如何利用css绘制三角形的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。以下是常用的三角形形状其实都是html+css就能实现,很简单代码如下:第一种方法html代码:代码如下:<!...
    99+
    2023-06-08
  • 如何利用Python pyecharts绘制饼图
    这篇文章主要为大家展示了“如何利用Python pyecharts绘制饼图”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用Python pyecharts绘制饼图”这篇...
    99+
    2023-06-22
  • 详解利用Flutter中的Canvas绘制有趣的图形
    目录简介等边三角形构建重复之美绘制彩虹绘制五角星总结简介 上一篇我们介绍了使用 Flutter 的 Canvas 绘制基本图形的示例,简单的示例没什么好玩的,今天这一篇我们来点有趣的...
    99+
    2024-04-02
  • Python Matplotlib如何绘制多子图
    这篇文章将为大家详细讲解有关Python Matplotlib如何绘制多子图,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通过获取子图的label和线型来合并图例注意添加label#导入数据(读...
    99+
    2023-06-29
  • 如何利用HTML5 Canvas API绘制矩形
    这篇文章主要为大家展示了“如何利用HTML5 Canvas API绘制矩形”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用HTML5 Canvas API...
    99+
    2024-04-02
  • 如何利用python绘制等高线图
    目录使用方法添加label的绘制虚线level设置颜色和线条宽度其他设置使用方法 matplotlib.pyplot.contour(*args, data=None, **kwar...
    99+
    2024-04-02
  • python如何利用turtle绘制正方形
    目录绘制正方形绘制四条边四种颜色的正方形turtle绘制无角正方形绘制正方形 程序如下 import turtle as t t.setup(650,350,200,200) #窗口...
    99+
    2024-04-02
  • 如何利用Matlab绘制有趣图像
    这篇文章主要介绍了如何利用Matlab绘制有趣图像,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.随机樱花树function sakura% @auth...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作