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

第一百八十三回 如何给图片添加阴影

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 实现思路
    • 2.2 实现方法
  • 3. 代码与效果
    • 3.1 示例代码
    • 3.2 运行效果
  • 4. 内容总结

我们在上一章回中介绍了"自定义可以滑动的刻度尺"样相关的内容,本章回中将介绍" 如何给图片添加阴影".闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

我们在前面章回中介绍了各种阴影,并且介绍了如何绘制阴影,不过还有一个比较特殊的组件没有阴影,该组件是图片,比如我们在绘制阴影时也无法给图片绘制阴影,我记得在Android原生开发时可以给图片绘制出阴影效果,但是在Flutter中无法给图片绘制出阴影。不过我们可以给图片添加阴影,本章回中将介绍具体的实现方法。

2. 思路与方法

2.1 实现思路

我们在前面的博客中介绍过一种给组件添加阴影的方法,给图片添加阴影可以借用此方法。总体的思路是在图片外层嵌套一个Container组件,然后通过Container组件来实现阴影效果,该阴影效果会出现在图片周围,相当于在图片上添加了阴影。

2.2 实现方法

有了实现的思路后,我们将介绍具体的实现方法,详细的步骤如下:

  1. 创建Container组件对象,并且把Image组件赋值给它的child属性;
  2. 创建BoxDecoration对象并且把它赋值给Container组件的decoration属性;
  3. 创建BoxShadow对象,并且把它赋值给BoxDecoration组件的boxShadow属性;
  4. 调整BoxShadow组件的相关属性,控制阴影的大小,位置和颜色;

3. 代码与效果

3.1 示例代码

我们按照刚才介绍的实现方法来给图片添加阴影,下面是详细的代码。

///给图片添加阴影 
Widget buildImageShadow() {
  return Container(
    decoration: const BoxDecoration(
      boxShadow: [BoxShadow(color: Colors.redAccent,
        blurRadius: 16,
        blurStyle: BlurStyle.solid,
      ),]

    ),
    child: const Image(
      width: 160,
      height: 100,
      image: AssetImage("images/panda.jpeg"),
      fit: BoxFit.fill,
      filterQuality:FilterQuality.high ,
    ),
  );
}

3.2 运行效果

编译并且运行上面的代码可以得到以下效果图.

在这里插入图片描述

从图中可以看到图片的周围有一个红色的阴影。这个阴影就是我们通过代码添加的阴影。大家可以自己动手修改BoxShadow组件的属性,进而调试出不同颜色,不同位置的阴影效果。强烈建议大家自己去实践。

此外,这种添加方法还有一个缺点:对于纯色的图片添加阴影效果比较好,对于包含不同颜色的图片添加阴影效果不太好,主要原因是:图片中包含多种颜色,而阴影的颜色无法和图片中的多种颜色保持一致。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 在绘制图片时无法绘制阴影,不过可以给图片添加阴影;
  • 给图片添加阴影通过Container组件和BoxShadow组件来实现;
  • BoxShadow组件可以控制阴影的颜色,范围大小,出现位置等属性;
  • 给纯色图片添加阴影的效果比较好,给包含不同颜色的图片添加的阴影效果不太好;

看官们,与"如何给图片添加阴影"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!


http://www.kler.cn/a/148780.html

相关文章:

  • sqlsever 分布式存储查询
  • 基于node一键发布到服务器的js脚本
  • arcgis做buffer
  • 国家网络安全法律法规
  • 【数学二】线性代数-线性方程组-齐次线性方程组、非齐次线性方程组
  • Ubuntu 的 ROS 操作系统安装与测试
  • 00.本地搭建 threejs 文档网站(网页版是外网比较慢)
  • redis运维(十九)redis 的扩展应用 lua(一)
  • Android:FragmentTransaction
  • a-range-picker 时间选择器的默认日期显示,日期格式化
  • OMP: Error #15: Initializing libiomp5md.dll
  • C语言——求π的近似值
  • 第八节HarmonyOS @Component自定义组件的生命周期
  • 【Qt之QSqlTableModel】介绍及使用
  • u-popup组件在UniApp中的讲解
  • Unity 关于生命周期函数的一些认识
  • 【创建一个组件并通过npm让其他人安装和调用】
  • 【数据结构】排序效率最优解之一:二叉树-堆
  • .netcore 获取appsettings
  • Leetcode—58.最后一个单词的长度【简单】
  • Linux处理文件常见命令
  • 基于合成数据的行人检测AI模型训练
  • 火柴人版王者-Java
  • java使用freemarker模板生成html,再生成pdf
  • 利用Spring Boot构建restful web service的详细流程
  • Nginx系列-正向代理和反向代理