鸿蒙 @ohos.arkui.drawableDescriptor (DrawableDescriptor)

news/2025/3/18 12:55:43/

鸿蒙 @ohos.arkui.drawableDescriptor (DrawableDescriptor)

在鸿蒙开发中,@ohos.arkui.drawableDescriptor 模块提供了一种强大的方式来处理图片资源,包括普通图片和分层图片(LayeredDrawableDescriptor)。通过这个模块,开发者可以获取图片的 PixelMap,并对其进行裁剪、融合等操作。


一、模块功能概述

@ohos.arkui.drawableDescriptor 模块提供了以下功能:

  • 获取 PixelMap:支持从普通图片或分层图片中获取 PixelMap
  • 分层图片处理:支持从 JSON 文件中加载分层图片,包括前景、背景和蒙版。
  • 裁剪路径:提供系统内置的裁剪路径参数,用于图片裁剪。

二、使用 DrawableDescriptor

(一)导入模块

在鸿蒙 Next 中,可以通过以下方式导入 @ohos.arkui.drawableDescriptor 模块:

import { DrawableDescriptor, LayeredDrawableDescriptor } from '@ohos.arkui.drawableDescriptor';

(二)创建 DrawableDescriptor 对象

通过 getDrawableDescriptorgetDrawableDescriptorByName 方法创建 DrawableDescriptorLayeredDrawableDescriptor 对象。

示例代码
@Entry
@Component
struct Index {private resManager = getContext().resourceManager;build() {Row() {Column() {Image((this.resManager.getDrawableDescriptor($r('app.media.icon').id) as LayeredDrawableDescriptor))Image(((this.resManager.getDrawableDescriptor($r('app.media.icon').id) as LayeredDrawableDescriptor).getForeground()).getPixelMap())}.height('50%')}.width('50%')}
}

三、获取 PixelMap

通过 getPixelMap 方法获取图片的 PixelMap

示例代码
let resManager = getContext().resourceManager;
let pixmap: DrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.icon').id)) as DrawableDescriptor;
let pixmapNew: object = pixmap.getPixelMap();

四、分层图片处理

分层图片需要通过 JSON 文件定义,包含前景、背景和蒙版。

drawable.json 示例
{"layered-image": {"background": "$media:background","foreground": "$media:foreground"}
}
获取分层图片的 PixelMap
let resManager = getContext().resourceManager;
let pixmap: LayeredDrawableDescriptor = (resManager.getDrawableDescriptor($r('app.media.icon').id)) as LayeredDrawableDescriptor;
let pixmapNew: object = pixmap.getPixelMap();

五、裁剪路径

通过 getMaskClipPath 方法获取系统内置的裁剪路径参数。

示例代码
@Entry
@Component
struct Index {build() {Row() {Column() {Image($r('app.media.icon')).width('200px').height('200px').clip(new Path({ commands: LayeredDrawableDescriptor.getMaskClipPath() }))Text(`获取系统内置的裁剪路径参数:`).fontWeight(800)Text(JSON.stringify(LayeredDrawableDescriptor.getMaskClipPath())).padding({ left: 20, right: 20 })}.height('100%').justifyContent(FlexAlign.Center)}.width('100%')}
}

六、总结

@ohos.arkui.drawableDescriptor 模块为鸿蒙开发提供了强大的图片处理功能,支持普通图片和分层图片的处理。通过 getDrawableDescriptor 方法获取图片资源,并通过 getPixelMap 方法获取 PixelMap。分层图片可以通过 JSON 文件定义,并支持前景、背景和蒙版的处理。此外,模块还提供了系统内置的裁剪路径参数,用于图片裁剪。

希望本文能帮助你更好地理解和使用 @ohos.arkui.drawableDescriptor 模块。如果有任何问题或需要进一步讨论,欢迎随时交流!


http://www.ppmy.cn/news/1580074.html

相关文章

【Godot】CanvasItem

(参考自deepseek回答) 在 Godot 引擎中,CanvasItem 是一个非常重要的类,它是所有 2D 渲染对象的基础类。CanvasItem 提供了 2D 渲染、变换、绘制和可见性控制等功能,是 Godot 2D 系统的核心组成部分。 1. CanvasItem 的…

日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(23):たら ても

日语学习-日语知识点小记-构建基础-JLPT-N4&N5阶段(23):たら& ても 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) たら >~た+ら (IF):如果,假设 条件假设语气(2) ても > て+も :即使……也…… (任何情况)(3) 復習(ふくしゅう…

ESP32学习 -从STM32工程架构进阶到ESP32架构

ESP32与STM32项目文件结构对比解析 以下是对你提供的ESP32项目文件结构的详细解释,并与STM32(以STM32CubeIDE为例)的常见结构进行对比,帮助你理解两者的差异: 1. ESP32项目文件解析 文件/目录作用STM32对应或差异set…

使用BLSTM自动评估句子级构音障碍的可理解性

使用BLSTM自动评估句子级构音障碍的可理解性 原文:Automatic Assessment of Sentence-Level Dysarthria Intelligibility Using BLSTM 引言 构音障碍简介 构音障碍的定义与特征 构音障碍是一种由神经原因引起的运动性言语障碍表现为肌肉无力、瘫痪或协调不良,导致言语清晰…

Bash中小数的大小比较以及if条件中小数的大小判断

1、在Bash中对小数进行大小判断时&#xff0c;需要使用bc命令进行判断&#xff0c;用-gt、-lt、-eq等或使用>、<、运算符比较。 注意&#xff1a;用bc命令比较时&#xff0c;真返回1&#xff0c;假返回0。 [rootCentos7-4 ~]# [ echo "120.5 > 88.8" | bc…

机器学习大纲

阶段1&#xff1a;打好基础 Python入门 重点学习内容&#xff1a; 基础语法&#xff1a;变量、循环、函数、类与对象&#xff08;对比Java的语法差异&#xff0c;如缩进代替大括号&#xff09;。Numpy/Pandas&#xff1a;处理数据的数组操作&#xff08;类比Java的ArrayList和…

Linux下用Bash Shell脚本和mysql命令行程序实现带多组参数和标签的MySQL数据库批量数据导出程序

Linux下用Bash Shell脚本连接到MySQL数据库&#xff0c;用SELECT secure_file_priv或者SHOW QUERY VARIABLE LIKE secure_file_priv’取得secure_file_priv变量的值&#xff0c;值为Linux的目录&#xff0c;如果获取的值为空&#xff0c;则输出提示信息让用户配置my.cnf文件中的…

openai-agents 中custom example agent

代码 pip show openai-agentsName: openai-agents Version: 0.0.4 Summary: OpenAI Agents SDK Home-page: https://github.com/openai/openai-agents-python Author: Author-email: OpenAI <supportopenai.com> License-Expression: MIT Location: d:\soft\anaconda\e…