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

[Harmony]颜色初始化

 默认初始化颜色

let color: Color = 0xFF00FF

创建一个工具,用十六进制颜色和RGBA初始化颜色


// 颜色工具类
export class ColorUtils {/*** 十六进制颜色初始化(支持透明度)* @param hex 支持格式:#RRGGBB、#AARRGGBB、0xRRGGBB、0xAARRGGBB* @param alpha 可选透明度(0-1)*/static fromHex(hex: string | number, alpha?: number): Color {let hexValue: number;if (typeof hex === 'string') {// 去除#号hex = hex.replace('#', '');// 处理3/4位简写格式if (hex.length === 3 || hex.length === 4) {hex = hex.split('').map(c => c + c).join('');}// 补全6位或8位if (hex.length === 6) {hex = 'FF' + hex; // 默认不透明}hexValue = parseInt(hex, 16);} else {hexValue = hex;}// 应用透明度覆盖if (alpha !== undefined) {const alphaByte = Math.round(alpha * 255);hexValue = (alphaByte << 24) | (hexValue & 0x00FFFFFF);}return hexValue as Color;}/*** RGBA颜色初始化* @param r 红色通道(0-255)* @param g 绿色通道(0-255)* @param b 蓝色通道(0-255)* @param a 透明度(0-1)*/static fromRGBA(r: number, g: number, b: number, a: number = 1): Color {const alphaByte = Math.round(a * 255);return ((alphaByte << 24) | (r << 16) | (g << 8) | b) as Color;}/*** 将Color转换为十六进制字符串* @param color 颜色对象* @param withAlpha 是否包含透明度通道* @returns 格式:#AARRGGBB 或 #RRGGBB*/static toHexString(color: Color, withAlpha: boolean = true): string {const num = Number(color);if (withAlpha) {return `#${((num >>> 0) & 0xFFFFFFFF).toString(16).padStart(8, '0').toUpperCase()}`;}return `#${((num & 0x00FFFFFF) >>> 0).toString(16).padStart(6, '0').toUpperCase()}`;}/*** 将Color转换为RGBA对象* @param color 颜色对象* @returns 包含r,g,b,a(0-1)的对象*/static toRGBA(color: Color): RGBAColor {const num = Number(color);return {r: (num >> 16) & 0xFF,g: (num >> 8) & 0xFF,b: num & 0xFF,a: ((num >> 24) & 0xFF) / 255};}
}interface RGBAColor {r: number;g: number;b: number;a: number;
}

http://www.dtcms.com/a/231287.html

相关文章:

  • [Harmony]网络状态监听
  • 5.29-6.4解决问题归纳
  • ‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
  • Linux系统iptables防火墙实验拓补
  • 亚马逊站内信规则2025年重大更新:避坑指南与合规策略
  • 制造业数智化:R²AIN SUITE 如何打通提效闭环
  • 使用 useSearchParams 的一个没有触发控制台报错的错误用法
  • 某校体育场馆结构自动化监测
  • LeetCode 2297. 跳跃游戏 VIII(中等)
  • 【电赛培训课程】电子设计竞赛工程基础知识
  • Git常用命令完全指南:从入门到精通
  • 【Redis实战:缓存与消息队列的应用】
  • 30 C 语言递归算法详解:基准条件、递归逻辑、循环对比、经典案例(斐波那契、猴子吃桃、汉诺塔、二分查找等)
  • 防火墙iptables项目实战
  • golang常用库之-go-feature-flag库(特性开关(Feature Flags))
  • 关于面试找工作的总结(四)
  • Linux容器篇、第一章_02Rocky9.5 系统下 Docker 的持久化操作与 Dockerfile 指令详解
  • 电子电路:共集电极放大器原理与作用解析
  • MySQL JSON 查询中的对象与数组技巧
  • nginx配置
  • DeviceNET从站转EtherNET/IP主站在盐化工行业的创新应用
  • STM32L0看门狗设置LL库
  • 《Vuejs设计与实现》第 7 章(渲染器的设计)
  • 一个小小的 flask app, 几个小工具,拼凑一下
  • 【Linux】Linux 环境变量
  • skynet monitor线程的作用
  • Webpack常见的插件和模式
  • STM32最小CLion开发环境
  • MYSQL之表的内连和外连
  • ABP-Book Store Application中文讲解 - Part 9: Authors: User Interface