返回顶部
首页 > 资讯 > 精选 >Flutter中CustomPaint怎么用
  • 477
分享到

Flutter中CustomPaint怎么用

2023-06-29 12:06:14 477人浏览 泡泡鱼
摘要

这篇文章主要介绍了Flutter中CustomPaint怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介在有些场景中,我们会需要绘制一些高度定制化的组件,比如 UI

这篇文章主要介绍了Flutter中CustomPaint怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

简介

在有些场景中,我们会需要绘制一些高度定制化的组件,比如 UI 设计师给我们出了个难题 —— 弄一个奇形怪状的边框。看在 UI 设计师是一个漂亮小姐姐的份上,又不好意思说这个做不了(那样也很没面子)。这个时候我们就不能直接使用 Flutter 自带的那些组件了,而是需要手动绘制组件,那就会需要用到 CuntomPaint 组件。CustomPaint 组件和前端canvas差不多,允许我们在一个画布上绘制各种元素,包括点、线、矩形、圆弧、文字、图片等等。

CustomPaint 介绍

CustomPaint是一个 Widget,其中有三个重要的参数:

CustomPaint(  child: childWidget(),  foregroundPainter: foregroundPainter(),  painter: backgroundPainter(),)

childCustomPaint的子组件;

painterforegroundPainter:都是 CustomPainter 类,用于定义 canvas 绘制的内容。区别在于,首先是执行 painter 的绘制指令。然后是在背景上渲染 child 子组件。最后,foregroundPainter 的内容会绘制在 child 上一层。

Flutter中CustomPaint怎么用

CustomPainter提供了一个paint绘图方法供我们绘制图形,该方法携带canvassize两个参数,其中 canvas 是画布,size 是画布大小。canvas 提供了很多绘制图形的方法,比如绘制路径、矩形、圆形和线条等等。

CustomPainter 示例

有了上面的基础概念后,我们来一个简单的示例来演示三个参数的层级关系。我们在backgroundPainter 上绘制一个蓝色的正方形,然后传入一个原型图片组件作为 child,最后是在 foregroundPainter 上绘制一个半透明的红色圆形遮住一部分图片。最终实现效果如下图,这样我们可以很好地了解三个元素的关系。

Flutter中CustomPaint怎么用

完整代码如下:

import 'dart:ui';import 'package:flutter/material.dart';class BasicPaintPage extends StatelessWidget {  const BasicPaintPage({Key? key}) : super(key: key);  @override  Widget build(BuildContext context) {    return CustomPaint(      child: Center(        child: ClipOval(          child: Image.asset(            'images/beauty.jpeg',            width: 200,            height: 200,            fit: BoxFit.fitWidth,          ),        ),      ),      painter: BackgroundPainter(),      foregroundPainter: ForegroundPainter(),    );  }}class BackgroundPainter extends CustomPainter {  @override  void paint(Canvas canvas, Size size) {    canvas.drawColor(Color(0xFFF1F1F1), BlendMode.color);    var center = size / 2;    var paint = Paint()..color = Color(0xFF2080E5);    paint.strokeWidth = 2.0;    canvas.drawRect(      Rect.fromLTWH(center.width - 120, center.height - 120, 240, 240),      paint,    );  }  @override  bool shouldRepaint(covariant CustomPainter oldDelegate) {    return false;  }}class ForegroundPainter extends CustomPainter {  @override  void paint(Canvas canvas, Size size) {    var center = size / 2;    var paint = Paint()..color = Color(0x80F53010);    paint.strokeWidth = 2.0;    canvas.drawCircle(      Offset(center.width, center.height),      100,      paint,    );  }  @override  bool shouldRepaint(covariant CustomPainter oldDelegate) {    return false;  }}

其中在背景绘制中我们制定了canvas 的背景色,即下面这行代码:

canvas.drawColor(Color(0xFFF1F1F1), BlendMode.color);

其他代码就相对好理解了,BackgroundPainter 绘制了一个蓝色正方形,child 是一个居中的圆形图片,而 ForegroundPainter 则是在中间绘制了一个和圆形图片同等大小的,半透明的红色圆圈。于是就得到了我们想要的效果。

感谢你能够认真阅读完这篇文章,希望小编分享的“Flutter中CustomPaint怎么用”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Flutter中CustomPaint怎么用

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

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

猜你喜欢
  • Flutter中CustomPaint怎么用
    这篇文章主要介绍了Flutter中CustomPaint怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。简介在有些场景中,我们会需要绘制一些高度定制化的组件,比如 UI ...
    99+
    2023-06-29
  • Flutter绘图组件之CustomPaint使用详解
    目录简介CustomPaint 介绍CustomPainter 示例总结简介 在有些场景中,我们会需要绘制一些高度定制化的组件,比如 UI 设计师给我们出了个难题 —&m...
    99+
    2024-04-02
  • Android Flutter利用CustomPaint绘制基本图形的方法
    今天小编给大家分享一下Android Flutter利用CustomPaint绘制基本图形的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获...
    99+
    2023-07-02
  • Flutter怎么用
    这篇文章给大家分享的是有关Flutter怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 前言在初学新技术之前,我们总会要从最基本的东西了解起来,就好比当接触Android的时候,我们学四大组件都要学好久...
    99+
    2023-06-04
  • 在Flutter中怎么使用dio
    今天小编给大家分享一下在Flutter中怎么使用dio的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。初始化 Dio您可以创建...
    99+
    2023-06-30
  • Flutter中怎么调用withAll函数
    这篇文章主要介绍“Flutter中怎么调用withAll函数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Flutter中怎么调用withAll函数”文章能帮助大家解决问题。正文接收到这样一个需求,...
    99+
    2023-07-04
  • Flutter中的数据库怎么使用
    这篇文章主要讲解了“Flutter中的数据库怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter中的数据库怎么使用”吧!在Flutter开发过程中,我门有时候需要对一些数据进...
    99+
    2023-06-30
  • 怎么在Flutter中使用导航Navigator
    本篇内容主要讲解“怎么在Flutter中使用导航Navigator”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Flutter中使用导航Navigator”吧!简介一个APP如果没有页面跳...
    99+
    2023-07-05
  • Android开发中Flutter组件怎么用
    这篇“Android开发中Flutter组件怎么用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android开发中Flut...
    99+
    2023-06-30
  • Flutter LinearProgressIndicator怎么使用
    要使用Flutter的LinearProgressIndicator,可以按照以下步骤进行:1. 导入Material库:在你的Da...
    99+
    2023-08-14
    Flutter
  • Flutter GetX怎么使用
    这篇文章主要讲解了“Flutter GetX怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flutter GetX怎么使用”吧!Flutter GetX是一个基于...
    99+
    2023-07-06
  • 【Flutter】Flutter 中 sqflite 的基本使用
    文章目录 一、前言二、什么是 sqflite三、如何在 Flutter 中安装 sqflite四、如何在 Flutter 中使用 sqflite1. 打开数据库2. 创建表3. 插入数据4. ...
    99+
    2023-09-18
    flutter android ios sql 原力计划
  • Flutter的SingleChildScrollView怎么使用
    今天小编给大家分享一下Flutter的SingleChildScrollView怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2023-06-29
  • 怎么制作Flutter应用
    这篇文章主要介绍怎么制作Flutter应用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. Flutter 是什么?Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美...
    99+
    2023-06-04
  • 怎么在Flutter中使用媒体播放器
    今天小编给大家分享一下怎么在Flutter中使用媒体播放器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用前的准备工作fl...
    99+
    2023-07-05
  • Flutter底部弹窗ModelBottomSheet怎么用
    这篇文章给大家分享的是有关Flutter底部弹窗ModelBottomSheet怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现效果最终实现效果如图片所示,分布演示了基础的,全屏的和自定义的底部弹窗形式。...
    99+
    2023-06-15
  • Flutter Sliver滚动组件怎么用
    这篇文章主要介绍了Flutter Sliver滚动组件怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flutter Sliver滚动组件 SliverList...
    99+
    2023-06-25
  • 怎么在Flutter中嵌套Android布局
    小编给大家分享一下怎么在Flutter中嵌套Android布局,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!效果本文具体demo效果如下开发首先创建flutter项目,在项目中定义好flutter需要展示布局: ...
    99+
    2023-06-15
  • Flutter基本组件Basics Widget怎么用
    这篇文章主要介绍Flutter基本组件Basics Widget怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 概述Basics Widget 并不是 Flutter 的一个专门的Widget类别...
    99+
    2023-06-22
  • 怎么用Flutter禁止手机横屏
    本篇内容介绍了“怎么用Flutter禁止手机横屏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在一些特定的 App 里,我们不希望手机横屏的...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作