纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片

news/2024/7/21 10:17:32 标签: harmonyos, 华为, 鸿蒙, Harmonyos next, harmonyos next

大家好,龙年报喜,大地回春,作为程序员,以代码之名,表达对于龙年的祝福。本节将演示如何在基于HarmonyOS ArkTS的Image组件来实现画一条中国龙,祝大家“码”上“鸿”福到!

本文涉及的所有源码,均可以在文末链接中找到。

创建应用

选择空模板。

https://img1.sycdn.imooc.com/65d5cb4600010ada05540372.jpg

创建名为ArkTSSVGChineseLoong的HarmonyOS应用。

https://img1.sycdn.imooc.com/65d5cb4e0001888308310558.jpg

核心代码讲解

首先是准备SVG图片资源chineseloong.svg,放置media目录下。图片是这样的

https://img1.sycdn.imooc.com/65d5cb4d000199ea04060453.jpg

主页Index.ets 主要是使用了Image来实现SVG图片显示。

代码如下:

@Entry
@Component
struct Index {
  @State message: string = '画龙迎春,“码”上“鸿”福到';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(26)
          .fontWeight(FontWeight.Bold)
        Image($r('app.media.chineseloong'))
          .height(390)
          .width(330)
      }
      .width('100%')
    }
    .height('100%')
  }
}复制

当然,此时的龙,还是一条睡着的黑龙,效果如下:

https://img1.sycdn.imooc.com/65d5cb950001968a03180661.jpg

如何来唤醒呢?可以加个按钮事件。

Button('画龙')
          .onClick(()=>{            // 点击变化颜色
            if (this.fillColor == Color.Black) {              this.fillColor = Color.Red;
            } else if (this.fillColor == Color.Red) {            this.fillColor = Color.Blue;
            }else if (this.fillColor == Color.Blue) {              this.fillColor = Color.Orange;
            }else if (this.fillColor == Color.Orange) {              this.fillColor = Color.Pink;
            }else if (this.fillColor == Color.Pink) {              this.fillColor = Color.Black;
            }
          })复制

上述按钮事件,实现了颜色的切换。

其中fillColor是一个颜色变量,默认是黑色。

@State fillColor: Color = Color.Black;复制

我们把fillColor变量赋值到Image组件上。

Image($r('app.media.chineseloong'))
          .height(390)
          .width(330)
          .fillColor(this.fillColor)复制

效果演示

https://img1.sycdn.imooc.com/65d5cbcd0001f2da04800713.jpg

B站视频:【老卫搬砖】042期:纯血鸿蒙来画龙!基于HarmonyOS ArkTS来操作SVG图片_哔哩哔哩_bilibili

源码

见:GitHub - waylau/harmonyos-tutorial: HarmonyOS Tutorial. 《跟老卫学HarmonyOS开发》


http://www.niftyadmin.cn/n/5385045.html

相关文章

mybitsPlus乐观锁@Version案例测试,发现有失效的情况

mybitsPlus乐观锁Version案例测试,发现有失效的情况 一、案例 Data TableName("NEWTABLE_TEST") ApiModel(value "BusBalance对象", description "额度表") public class NewTableTest {private static final long serialVersion…

Prometheus+TDengine集群实现监控体系高可用

背景 为避免再次出现因Prometheus宕机导致业务无法查看历史数据受到影响,准备将Prometheus架构从单节点方式升级为高可用集群方式并将后端存储由本地存储改为远端分布式时序数据库存储。分布式时序数据库采用国产数据库TDengine。 架构 解释:虚线代表P…

MySQL8的ONLY_FULL_GROUP_BY SQL模式兼容问题

文章目录 1. 问题描述2. 解决方法1. 修改查询2. 修改SQL模式3. 使用ANY_VALUE()函数 1. 问题描述 Cause: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column btc-cloud.t1.id which is not funct…

C#上位机与三菱PLC的通信08---开发自己的通讯库(A-1E版)

1、A-1E报文回顾 具体细节请看: C#上位机与三菱PLC的通信03--MC协议之A-1E报文解析 C#上位机与三菱PLC的通信04--MC协议之A-1E报文测试 2、为何要开发自己的通讯库 前面使用了第3方的通讯库实现了与三菱PLC的通讯,实现了数据的读写,对于通…

【经验分享】自然语言处理技术有哪些局限性和挑战?

个人认为,主要是两个难点: 1.语料,通常的语料很好解决,用爬虫从互联网上就可以采集和标注训练。但是我们接触很多项目和客户需求都是专业性很强的,例如:航天材料、电气设备、地理信息、化学试剂 等等。往往…

get和set方法太多太臃肿?快使用 lombok

目录 0. lombok 介绍 1. lombok 使用 1.1 创建一个 maven 项目 1.2 在项目中引用依赖 1.3 在 idea 中添加 lombok 插件 1.4 使用 lombok 注解 1.5 Idea 运行报 Lombok requires enables annotation process 错误解决办法 0. lombok 介绍 当我们写一个类时,为了…

教学设计与课堂教学的关系是什么

当你走进教室,是否曾思考过这背后的精心策划?每一堂课的呈现,都源于细致的教学设计。那么,教学设计与课堂教学之间,又隐藏着怎样的秘密呢? 教学设计,就像是一部剧本,为演员&#xf…

飞常准查航班小程序采集

仅限学习使用 <html> <head> </head> <body><script src"AesUtil.js"></script><script src"md5.js"></script><script>function test(a) { return true; }function serialize(o) {var n argumen…