【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二)

这篇具有很好参考价值的文章主要介绍了【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

CustomPaint

使用实例和代码:

1.canvas.drawColor 绘制背景颜色

class MyPainter1 extends CustomPainter {
  
  void paint(Canvas canvas, Size size) {
    //绘制背景颜色,整个UI 现在就是红色的
    canvas.drawColor(Colors.red, BlendMode.srcATop);

  }

  
  bool shouldRepaint(covariant CustomPainter oldDelegate) {
    return true;
  }
}

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

2.canvas.drawCircle 绘制圆

    final whitePaint = Paint()..color = Colors.red;
    //offset 位置,半径
    canvas.drawCircle(const Offset(100, 100), 100, whitePaint);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

3.canvas.drawRect绘四边形

    //绘制四边形
    final redPaint = Paint()..color = Colors.red;
    // left:距离左边的距离, top:距离右边的距离, width, height
    canvas.drawRect(Rect.fromLTWH(100, 100, 100, 100), redPaint);
    //center 中心点的位置, 宽高,
    canvas.drawRect(
        Rect.fromCenter(center: Offset(50, 50), width: 100, height: 100),
        redPaint);
    //radius 半径
    canvas.drawRect(
        Rect.fromCircle(center: const Offset(50, 50), radius: 50), redPaint);

    canvas.drawRect(
        Rect.fromPoints(const Offset(50, 50), Offset(100, 100)), redPaint);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

4.canvas.drawRRect 绘制圆角矩形

其他的方法可以自行尝试,参数大同小异

// left, top, right, bottom, radius
    canvas.drawRRect(
        RRect.fromLTRBR(100, 100, 200, 200, Radius.circular(20)), redPaint);
//可以设定不同边角弧度的
    canvas.drawRRect(
        RRect.fromLTRBAndCorners(100, 100, 200, 200,
            topLeft: const Radius.circular(20)),
        redPaint);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

5.canvas.drawRRect 嵌套绘制

canvas.drawDRRect(
    RRect.fromLTRBR(100, 100, 300, 300, const Radius.circular(20)),
    RRect.fromLTRBR(150, 150, 200, 200, const Radius.circular(20)),
    redPaint);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

6.canvas.drawOval 绘制椭圆形

//椭圆形
    canvas.drawOval(Rect.fromLTRB(100, 80, 400, 300), redPaint);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

7.canvas.drawPath 绘制路径

    final redPaint = Paint()
      ..color = Colors.red
      ..strokeWidth = 2.0
      ..style = PaintingStyle.stroke;

    // final path = Path()
    //   ..moveTo(100, 100) //起始点
    //   ..lineTo(200, 200) //链接到点
    //   ..lineTo(400, 400) //链接到点
    //   ..close(); //关闭
    // canvas.drawPath(path, redPaint);

    final path1 = Path()
      ..moveTo(400, 400) //起始点
      ..lineTo(400, 500) //链接到点
      ..lineTo(400, 400) //链接到点
      ..addRect(Rect.fromLTRB(500, 500, 100, 100)) //新增一个矩形,或者其他的也可以
      ..close(); //关闭
      //或者在这边添加也可以
    // path1.addRect(Rect.fromLTRB(500, 500, 100, 100));
    // path1.close();
    canvas.drawPath(path1, redPaint);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

8.canvas.drawArc 绘制弧形

// 绘制圆弧的形状
    // rect:绘制一个矩形, startAngle:圆弧开始的角度, sweepAngle:开始到结束的角度大小, useCenter:是否闭合向着中心位置
    canvas.drawArc(
        Rect.fromPoints(Offset(0, 0), Offset(200, 200)), 0, 3.14, true, painit);

9.canvas.drawShadow绘制阴影

  final painit = Paint()
    ..color = Colors.red
    ..strokeWidth = 10;
  Path path = Path();
  path
    ..moveTo(8, 200)
    ..lineTo(320, 400)
    ..lineTo(200, 340)
    ..lineTo(100, 460)
    ..close();
  // path, color, elevation, transparentOccluder表示如果遮挡对象是透明的,应该为true,否则为false
  canvas.drawShadow(path, Colors.green, 8.0, false);
  canvas.drawPath(path, painit);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

10.canvas.drawPoints 绘制点

    List<Offset> points = const [
      Offset(100, 100),
      Offset(200, 200),
      Offset(300, 300),
      Offset(100, 400),
      Offset(500, 500),
      Offset(441, 231),
    ];
    //两个两个点绘制为一条线
    // canvas.drawPoints(PointMode.lines, points, painit);
    // 绘制点
    // canvas.drawPoints(PointMode.points, points, painit);
    // 点按照顺序连接起来
    canvas.drawPoints(PointMode.polygon, points, painit);

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android

11.绘制五角星

绘制完成之后close,起始点和close 点会链接起来

   debugPrint("size.width ${size.width}");
    Path path = Path()..moveTo(size.width / 2, 200);
    path.lineTo(size.width / 4, 500);
    path.lineTo(size.width / 7 * 6, 320);
    path.lineTo(size.width / 7, 320);
    path.lineTo(size.width / 4 * 3, 500);
    path.close(); //闭合,没有这个就不会闭合

    debugPrint(
        "point ${size.width / 2},200=${size.width / 4} 500=${size.width / 7 * 6} 320=${size.width / 7} 320==${size.width / 4 * 3} 500");

【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二),Flutter,flutter,javascript,android文章来源地址https://www.toymoban.com/news/detail-639955.html

到了这里,关于【Flutter】【基础】CustomPaint 绘画功能,绘制各种图形(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据可视化神器!Matplotlib Python教程 | 从入门到精通绘制各种类型的图形和保存图形

    大家好,我是爱吃熊掌的鱼,今天我要给大家带来一篇有趣开朗的Matplotlib Python教程。Matplotlib是Python中最流行的数据可视化库之一,它可以帮助我们将数据转化为易于理解的图表和图形。无论你是初学者还是专业人士,Matplotlib都是一个非常有用的工具。让我们开始吧! 在开

    2023年04月21日
    浏览(46)
  • ChatGPT(小程序版)- 可AI绘画、内置各种功能

    chatGP在网络上可是出了名的火爆,无论是圈内还是圈外的人,都希望能尝试一下,不过因为没有办法在中国注册,所以门槛拦住了一大半人的使用。 再加上近来大量的 GPT头衔被封,人们在用它的时候,都会感到有心无力。。 在此向各位安利一款名为“AI硅基小助手”的小程

    2024年02月09日
    浏览(42)
  • OpenCV基础知识4 — 绘制图形

    前言: Hello大家好,我是小哥谈。 OpenCV提供了许多用于绘制图形的方法,包括绘制线段的line()方法、绘制矩形的retangle()方法、绘制圆形的circle()方法、绘制多边形的polylines()方法和绘制文字的putText()方法。本节课将依次对上述各个方法进行讲解,并使用上述方法绘制相应的图

    2024年02月13日
    浏览(49)
  • 类ChatGPT(小程序版) – 可AI绘画、内置各种功能,可会话记忆

    chatGP在网络上可是出了名的火爆,无论是圈内还是圈外的人,都希望能尝试一下,不过因为没有办法在中国注册,所以门槛拦住了一大半人的使用。 再加上近来大量的 GPT头衔被封,人们在用它的时候,都会感到有心无力。。 在此向各位安利一款名为“AI硅基小助手”的小程

    2024年02月09日
    浏览(35)
  • AI 绘画基础 - 细数 Stable Diffusion 中的各种常用模型 【? 魔导士装备图鉴】

    AI 绘画新手魔导士在刚开始玩 Stable Diffusion 时总会遇到各种新的概念,让人困惑,其中就包括各种模型和他们之间的关系。 魔法师入门得先认识各种法师装备(各种模型),让我们遇到问题知道使用何种装备来协助自己发挥更大的效果。 在了解各种模型之前,有必须先了解

    2024年02月03日
    浏览(45)
  • AI 绘画基础 - 细数 Stable Diffusion 中的各种常用模型 【 魔导士装备图鉴】

    AI 绘画新手魔导士在刚开始玩 Stable Diffusion 时总会遇到各种新的概念,让人困惑,其中就包括各种模型和他们之间的关系。 魔法师入门得先认识各种法师装备(各种模型),让我们遇到问题知道使用何种装备来协助自己发挥更大的效果。 在了解各种模型之前,有必须先了解

    2024年02月10日
    浏览(74)
  • 鸿蒙开发-UI-图形-绘制自定义图形

    鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 鸿蒙开发-UI-图形-图片 鸿蒙开发-UI-图形-绘制几何图形 文章目录 前言 一、使用画布组件绘制自定义图形 1.初始化画布组

    2024年04月15日
    浏览(33)
  • pytorch各种激活函数绘制

    2023年08月17日
    浏览(40)
  • Mermaid使用教程(绘制各种图)

    简介 本文将主要介绍使用Mermaid绘制各种各样的常用的图,例如:饼状图、序列图、甘特图等等,当然Mermaid也可以用来绘制流程图,可以参见我的另一篇文章: https://blog.csdn.net/m0_54218263/article/details/135684176 饼状图 Mermaid 是一个用于生成图表和流程图的 JavaScript 库,它使用 M

    2024年01月21日
    浏览(41)
  • Pygame 教程(3):绘制图形

    本章,你将学习如何在 Pygame 中绘制图形。 上一章:重要的概念及对象 下一章:图像传输和绘制文本 抗锯齿(anti-aliasing,简称 AA)是一种消除显示器输出的画面中图物边缘出现凹凸锯齿的技术。实现抗锯齿效果需要更多的计算时间,因此在进行高质量绘制的同时,也会带来

    2024年02月06日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包