【HarmonyOS Next】鸿蒙应用加载SVG文件显示图标

【HarmonyOS Next】鸿蒙应用加载SVG文件显示图标

一、SVG是什么?

SVG 即可缩放矢量图形(Scalable Vector Graphics),它是一种基于 XML 语法的二维矢量图形格式,由万维网联盟(W3C)制定。

SVG 使用 XML 文本格式来描述图形,与传统的位图图像(如 JPEG、PNG 等)不同,SVG 图形是由一系列的点、线、形状和颜色定义组成的,而不是像素点。这使得 SVG 图形具有无限的可扩展性,无论放大或缩小多少倍,图形都能保持清晰、不失真。

SVG 代码示例,用于绘制一个黄色的圆形:

dart 复制代码
<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="50" r="40" fill="yellow" />
</svg>

二、鸿蒙中如何加载显示?

首先将 SVG 文件放置在项目的 entry/src/main/resources/base/media 目录下。

dart 复制代码
@Entry
@Component
struct SvgIconExample {
  build() {
    Column({ space: 50 }) {
      // 假设 svg 文件名为 icon.svg
      Image($r('media.icon')) 
        .width(100)
        .height(100)
    }
    .width('100%')
    .padding({ top: 50 })
  }
}

$r 是资源引用函数,media.icon 表示引用 media 目录下名为 icon 的资源文件。这里会加载 entry/src/main/resources/base/media 目录下的 icon.svg 文件。

三、源码示例:

以下是一个将本地加载 SVG 和网络加载 SVG :

dart 复制代码
@Entry
@Component
struct SvgLoadingExample {
  build() {
    Column({ space: 50 })
      .width('100%')
      .padding({ top: 50 })
      .alignItems(FlexAlign.Center) {
      // 本地加载 SVG
      Text('本地加载 SVG')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
      // 假设本地 SVG 文件名为 local_icon.svg
      Image($r('media.local_icon')) 
        .width(100)
        .height(100)

      // 网络加载 SVG
      Text('网络加载 SVG')
        .fontSize(20)
        .fontWeight(FontWeight.Bold)
      Image('https://upload.wikimedia.org/wikipedia/commons/thumb/4/4f/SVG_Logo.svg/1200px-SVG_Logo.svg.png') 
        .width(100)
        .height(100)
    }
  }
}
相关推荐
Fanmeang1 小时前
OSPF高级特性之FRR
运维·网络·华为·ip·ospf·spf·frr
kumalab2 小时前
HarmonyOS ArkTS卡片堆叠滑动组件实战与原理详解(含源码)
华为·harmonyos
别说我什么都不会3 小时前
【OpenHarmony】鸿蒙开发之xml2jsDemo
harmonyos
HarmonyOS_SDK6 小时前
HarmonyOS免密认证方案 助力应用登录安全升级
harmonyos
zhanshuo7 小时前
鸿蒙操作系统核心特性解析:从分布式架构到高效开发的全景技术图谱
harmonyos
塞尔维亚大汉8 小时前
鸿蒙内核源码分析(编译过程篇) | 简单案例窥视编译全过程
源码·harmonyos
别说我什么都不会8 小时前
【OpenHarmony】鸿蒙开发之ohos_beacon_library
harmonyos
瑶光守护者8 小时前
【卫星通信】超低比特率语音编解码器(ULBC)的信道特性评估
深度学习·华为·卫星通信·3gpp·ulbc
不凡的凡14 小时前
鸿蒙图片相似性对比
华为·harmonyos
Georgewu16 小时前
【HarmonyOS】HAR和HSP循环依赖和依赖传递问题详解
harmonyos