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

[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.xdnf.cn/news/11874.html

相关文章:

  • 国产化Word处理控件Spire.Doc教程:Java实现HTML 转Word自动化
  • GICv3电源管理
  • 防止网站被iframe嵌套的安全防护指南
  • python3GUI--车牌、车牌颜色识别可视化系统 By:PyQt5(详细介绍)
  • 【算法深练】分组循环:“分”出条理,化繁为简
  • 匀速旋转动画的终极对决:requestAnimationFrame vs CSS Animation
  • 嵌入式常见 CPU 架构
  • Java转Go日记(五十七):gin 中间件
  • AlphaFold3运行错误及解决方法(1)
  • 25_05_29docker
  • 证券交易柜台系统解析与LinkCounter解决方案开发实践
  • 安全-JAVA开发-第二天
  • Spring Framework 中 UriComponentsBuilder工具类
  • 【开源工具】基于PyQt5工作时长计算器工具开发全解析
  • 【多线程初阶】wait() notify()
  • 高效获取淘宝商品实时数据:API 接口开发与接入指南
  • 使用PyQt5的图形用户界面(GUI)开发教程
  • 基于对比学习的带钢表面缺陷分类研究,整合SimCLR自监督预训练与YOLOv8目标检测框架的技术解析及Python实现方案
  • mac版excel如何制作时长版环形图
  • 从npm库 Vue 组件到独立SDK:打包与 CDN 引入的最佳实践
  • 利用 USB 设备重定向实现无缝远程办公
  • win7 系统盘如何瘦身! 可整理出4-5G。
  • TopView(赢富)数据图片怎么看
  • python3.7的下载,以及详细的安装教程
  • go strings.TrimPrefix() 和 strings.TrimLeft()
  • LaTeX 常用语法格式总结 列表计数、图、公式、表格、参考文献环境
  • 【C#】轻松理解AutoResetEvent 和 ManualResetEvent
  • C#源码大汇总
  • Python搭建网站的基本模板,python搭建网站最快多久
  • 电脑提示Explorer.exe系统错误该怎么办?