当前位置: 首页 > 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.lqws.cn/news/121645.html

相关文章:

  • 【Linux】网络--传输层--深入理解TCP协议
  • 【产品业务设计】支付业务设计规范细节记录,含订单记录、支付业务记录、支付流水记录、退款业务记录
  • Flutter面试题
  • 【Linux】centos软件安装
  • 卫星在轨姿态控制技术详解:从自旋稳定到高精度闭环控制
  • 各个布局的区别以及示例
  • 【学习笔记】Circuit Tracing: Revealing Computational Graphs in Language Models
  • R语言基础| 下载、安装
  • 豆瓣图书评论数据分析与可视化
  • Nginx+Tomcat负载均衡与动静分离架构
  • 夏普比率(Sharpe ratio)​
  • MySQL EXPLAIN 命令详解
  • 【Python金融笔记】加载数据与可视化
  • MCP客户端Client开发流程
  • 0. MySQL在Centos 7环境安装
  • 一键更新依赖全指南:Flutter、Node.js、Kotlin、Java、Go、Python 等主流语言全覆盖
  • 【2025】使用docker compose一键部署项目到服务器(4)
  • Dify智能问数大模型Text2SQL流程编排从0到1完整过程
  • 详细讲解Flutter GetX的使用
  • Jenkins的学习与使用(CI/CD)
  • Quick UI 组件加载到 Axure
  • [Harmony]网络状态监听
  • Solana Web3 快速入门:创建并获取钱包账户的完整指南
  • Axure高保真LayUI框架 V2.6.8元件库
  • Axure 下拉框联动
  • 2025年Splunk的替代方案:更智能的安全选择
  • 力提示(force prompting)的新方法
  • PHP 复制商品扩展实操:轻松切换一号通、99api ,实现商品复制功能
  • 【Linux 】centos8搭建nextcloud全过程
  • 直播美颜SDK深度解析:AI人脸美型与智能美白技术揭秘