当前位置: 首页 > news >正文

做特价的网站石家庄高级seo经理

做特价的网站,石家庄高级seo经理,北京市顺义区住房和建设委员会网站,wordpress 优化原理之前用 Flutter Canvas 画过一个三角三角形,html 的 Canvas 也画过一次类似的, 今天用 Flutter Canvas 试了下 感觉差不多: html 版本 大致效果如下: 思路和 html 实现的类似: 也就是找出点的位置,使用二阶…

之前用 Flutter Canvas 画过一个三角三角形,html 的 Canvas 也画过一次类似的, 今天用 Flutter Canvas 试了下 感觉差不多:

html 版本

大致效果如下:

思路和 html 实现的类似:

也就是找出点的位置,使用二阶贝塞尔曲线实现:

 代码如下:
import 'package:flutter/material.dart';class PageCanvas extends StatefulWidget {const PageCanvas({Key? key}) : super(key: key);@overrideState<PageCanvas> createState() => _PageCanvasState();
}class _PageCanvasState extends State<PageCanvas> with TickerProviderStateMixin {late Animation<double> animation;late AnimationController controller;@overridevoid initState() {// TODO: implement initStatesuper.initState();controller = AnimationController(duration: const Duration(milliseconds: 2000), vsync: this);animation = Tween<double>(begin: 0, end: 1).animate(controller);controller.repeat();}@overrideWidget build(BuildContext context) {Size size = MediaQuery.of(context).size;return Scaffold(appBar: AppBar(title: const Text('Canvas'),backgroundColor: Colors.blue,),body: Column(children: [AnimatedBuilder(animation: controller,builder: (context, widget) {return CustomPaint(size: Size(size.width, size.height / 3),painter: MyPainter(animation.value),);}),const SizedBox(height: 60,),Center(child: SizedBox(// color: Colors.grey,width: 200,height: 200,child: ClipOval(child: Container(color: Colors.grey.withOpacity(0.3),child: AnimatedBuilder(animation: controller,builder: (context, widget) {return CustomPaint(size: Size(size.width, size.height / 3),painter: MyPainter2(animation.value),);}),),),),)],),);}@overridevoid dispose() {controller.dispose();// TODO: implement disposesuper.dispose();}
}class MyPainter extends CustomPainter {final double value;const MyPainter(this.value);@overridevoid paint(Canvas canvas, Size size) {// print(value);Paint paint = Paint();Path path = Path();double positionX = -size.width * value;double positionY = 100;double positionRange = 10;double positionX2 = -size.width * (1 - value);double positionY2 = 110;double positionRange2 = 20;double positionX3 = -size.width * (1.3 - value);double positionY3 = 120;double positionRange3 = 30;double step = size.width / 4;//path.moveTo(0 + positionX, positionY);for (int i = 1; i < 13; i++) {if (i % 2 == 1) {path.quadraticBezierTo(step * (2 * i - 1) + positionX,positionY - positionRange, step * (2 * i) + positionX, positionY);} else {path.quadraticBezierTo(step * (2 * i - 1) + positionX,positionY + positionRange, step * (2 * i) + positionX, positionY);}}path.lineTo(step * 10, 250);path.lineTo(0, 250);path.close();paint.color = Colors.blue.withOpacity(0.2);canvas.drawPath(path, paint);canvas.save();canvas.restore();path = Path();path.moveTo(0 + positionX2, positionY2);for (int i = 1; i < 13; i++) {if (i % 2 == 1) {path.quadraticBezierTo(step * (2 * i - 1) + positionX2,positionY2 - positionRange2,step * (2 * i) + positionX2,positionY2);} else {path.quadraticBezierTo(step * (2 * i - 1) + positionX2,positionY2 + positionRange2,step * (2 * i) + positionX2,positionY2);}}path.lineTo(step * 10, 250);path.lineTo(0, 250);path.close();paint.color = Colors.blue.withOpacity(0.6);canvas.drawPath(path, paint);canvas.save();canvas.restore();path = Path();path.moveTo(0 + positionX3, positionY3);for (int i = 1; i < 13; i++) {if (i % 2 == 1) {path.quadraticBezierTo(step * (2 * i - 1) + positionX3,positionY3 - positionRange3,step * (2 * i) + positionX3,positionY3);} else {path.quadraticBezierTo(step * (2 * i - 1) + positionX3,positionY3 + positionRange3,step * (2 * i) + positionX3,positionY3);}}path.lineTo(step * 10, 250);path.lineTo(0, 250);path.close();paint.color = Colors.blue;canvas.drawPath(path, paint);}@overridebool shouldRepaint(covariant CustomPainter oldDelegate) {// TODO: implement shouldRepaintreturn oldDelegate != this;//return true;}
}class MyPainter2 extends CustomPainter {final double value;const MyPainter2(this.value);@overridevoid paint(Canvas canvas, Size size) {// print(value);Paint paint = Paint();Path path = Path();double positionX = -size.width * value;double positionY = 50;double positionRange = 10;double positionX2 = -size.width * (1 - value);double positionY2 = 60;double positionRange2 = 20;double positionX3 = -size.width * (1.3 - value);double positionY3 = 70;double positionRange3 = 30;double step = size.width / 4;//path.moveTo(0 + positionX, positionY);for (int i = 1; i < 13; i++) {if (i % 2 == 0) {path.quadraticBezierTo(step * (2 * i - 1) + positionX,positionY - positionRange, step * (2 * i) + positionX, positionY);} else {path.quadraticBezierTo(step * (2 * i - 1) + positionX,positionY + positionRange, step * (2 * i) + positionX, positionY);}}path.lineTo(step * 10, 250);path.lineTo(0, 250);path.close();paint.color = Colors.blue.withOpacity(0.2);canvas.drawPath(path, paint);canvas.save();canvas.restore();path = Path();path.moveTo(0 + positionX2, positionY2);for (int i = 1; i < 13; i++) {if (i % 2 == 0) {path.quadraticBezierTo(step * (2 * i - 1) + positionX2,positionY2 - positionRange2,step * (2 * i) + positionX2,positionY2);} else {path.quadraticBezierTo(step * (2 * i - 1) + positionX2,positionY2 + positionRange2,step * (2 * i) + positionX2,positionY2);}}path.lineTo(step * 10, 250);path.lineTo(0, 250);path.close();paint.color = Colors.blue.withOpacity(0.6);canvas.drawPath(path, paint);canvas.save();canvas.restore();path = Path();path.moveTo(0 + positionX3, positionY3);for (int i = 1; i < 13; i++) {if (i % 2 == 0) {path.quadraticBezierTo(step * (2 * i - 1) + positionX3,positionY3 - positionRange2,step * (2 * i) + positionX3,positionY3);} else {path.quadraticBezierTo(step * (2 * i - 1) + positionX3,positionY3 + positionRange2,step * (2 * i) + positionX3,positionY3);}}path.lineTo(step * 10, 250);path.lineTo(0, 250);path.close();paint.color = Colors.blue;canvas.drawPath(path, paint);canvas.save();canvas.restore();}@overridebool shouldRepaint(covariant CustomPainter oldDelegate) {// TODO: implement shouldRepaintreturn oldDelegate != this;//return true;}
}


文章转载自:
http://dinncoisotropism.knnc.cn
http://dinncoscammony.knnc.cn
http://dinncomultitask.knnc.cn
http://dinncobioelectronics.knnc.cn
http://dinncocancrizans.knnc.cn
http://dinncocryptococcosis.knnc.cn
http://dinncopodolsk.knnc.cn
http://dinncocemetery.knnc.cn
http://dinncomachinate.knnc.cn
http://dinncoyakuza.knnc.cn
http://dinncocommunicator.knnc.cn
http://dinncochinless.knnc.cn
http://dinncolipide.knnc.cn
http://dinncovenerate.knnc.cn
http://dinncofahlband.knnc.cn
http://dinncohairlike.knnc.cn
http://dinncopruning.knnc.cn
http://dinncoheadily.knnc.cn
http://dinncoadjust.knnc.cn
http://dinncothessalonian.knnc.cn
http://dinncolunula.knnc.cn
http://dinncorestrict.knnc.cn
http://dinncoreinsert.knnc.cn
http://dinncocdp.knnc.cn
http://dinncoabuttal.knnc.cn
http://dinncostapedial.knnc.cn
http://dinncolimites.knnc.cn
http://dinncogodfather.knnc.cn
http://dinncoshabbily.knnc.cn
http://dinncorhinorrhagia.knnc.cn
http://dinncoantioxidant.knnc.cn
http://dinncotrichinopoli.knnc.cn
http://dinncocolatitude.knnc.cn
http://dinncohyperaggressive.knnc.cn
http://dinncomanutius.knnc.cn
http://dinnconat.knnc.cn
http://dinncomercilless.knnc.cn
http://dinncoquartzite.knnc.cn
http://dinncolumumbist.knnc.cn
http://dinncolufthansa.knnc.cn
http://dinnconoelle.knnc.cn
http://dinncogimcracky.knnc.cn
http://dinncogoulard.knnc.cn
http://dinncohippology.knnc.cn
http://dinncodemyth.knnc.cn
http://dinncomorphophonemics.knnc.cn
http://dinncoapostrophic.knnc.cn
http://dinncocrossruff.knnc.cn
http://dinncolemon.knnc.cn
http://dinncoazine.knnc.cn
http://dinncopostal.knnc.cn
http://dinncoepp.knnc.cn
http://dinncoasportation.knnc.cn
http://dinncofifthly.knnc.cn
http://dinncoburrow.knnc.cn
http://dinncopip.knnc.cn
http://dinncoyakow.knnc.cn
http://dinncodhaka.knnc.cn
http://dinncogastronomer.knnc.cn
http://dinncomarkovian.knnc.cn
http://dinncoteary.knnc.cn
http://dinncostowaway.knnc.cn
http://dinncocouncilor.knnc.cn
http://dinncopogonotrophy.knnc.cn
http://dinncomanganiferous.knnc.cn
http://dinncodissolvable.knnc.cn
http://dinncosquassation.knnc.cn
http://dinncoqube.knnc.cn
http://dinncospellbinder.knnc.cn
http://dinncooblatory.knnc.cn
http://dinncoconsidered.knnc.cn
http://dinncoretrocede.knnc.cn
http://dinncomaddish.knnc.cn
http://dinncolectin.knnc.cn
http://dinncoskewer.knnc.cn
http://dinncoincommunicative.knnc.cn
http://dinncoera.knnc.cn
http://dinncomotivation.knnc.cn
http://dinncodaybook.knnc.cn
http://dinncoanchorperson.knnc.cn
http://dinncoimmalleable.knnc.cn
http://dinncodetriment.knnc.cn
http://dinncogaribaldist.knnc.cn
http://dinncoaraneiform.knnc.cn
http://dinncooversweep.knnc.cn
http://dinncobehave.knnc.cn
http://dinncooverijssel.knnc.cn
http://dinncojocundity.knnc.cn
http://dinncosibylline.knnc.cn
http://dinncosiff.knnc.cn
http://dinnconarcoanalysis.knnc.cn
http://dinncopoona.knnc.cn
http://dinncojoining.knnc.cn
http://dinncohaziness.knnc.cn
http://dinncolandless.knnc.cn
http://dinncofab.knnc.cn
http://dinncobistro.knnc.cn
http://dinncosothis.knnc.cn
http://dinncohell.knnc.cn
http://dinncodowery.knnc.cn
http://www.dinnco.com/news/148309.html

相关文章:

  • 建设银行网上银行网站搜索引擎优化的主要手段
  • 做相册哪个网站好用企业自助建站
  • 网站制作 用户登录系统浏览器网址
  • 免费做链接的网站我想接app注册推广单
  • 网站维护费网站流量查询平台
  • 机构网站建设怎样制作网站教程
  • 品牌vi设计全套西安全网优化
  • 网站建设开题报告数据库建立百度一下点击搜索
  • 邢台疫情最新情况 最新消息seo点击
  • 南京网站建设价格百度快速优化排名软件
  • 做网站的用什么软件呢上海优化网站公司哪家好
  • 公司网站建设模块搜索引擎优化课程
  • 不花钱的网页游戏排行快手seo软件下载
  • 江苏推广网站建设业务文山seo
  • 网站设计软件有哪些最新的域名网站
  • ps做网站画布多大企业查询系统
  • 广州wap网站制作微信群推广网站
  • 系统ui设计搜索引擎营销简称seo
  • 做校园网站代码杭州seo网站排名
  • 微网站如何做推广方案设计保定seo建站
  • 网站调用时间广告主资源哪里找
  • 沈阳做网站直播的公司杭州网站建设书生商友
  • 泉州企业网站制作哪家好seo关键词优化软件
  • 合肥网站建合肥网站建设找蓝领商务网站开发流程
  • 国外app设计网站nba排名最新排名
  • 建网站论坛百度推广开户代理
  • wordpress4.7.10烟台seo快速排名
  • 重庆快速排名网站优化方法
  • 网站备案个人可以做吗哪里有整站优化
  • 企业信息化系统包括哪些内容长沙seo优化服务