当前位置: 首页 > 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;
}

相关文章:

  • [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配置
  • wordpress博客vieu/seo测试工具
  • 网站建设与案例管理的心得体会/2022双11各大电商平台销售数据
  • 怎么样子做网站/企业网络推广技巧
  • 做网站买Java什么书/网络营销推广策略
  • 张家港普通网站建设/如何交换友情链接
  • 极简风格 网站/电话营销