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

【HarmonyOS】鸿蒙仿iOS线性渐变实现

【HarmonyOS】仿照IOS中可以通过输入start=(0,0),end=(1,1)获取角度到.linearGradient,从而实现左上到右下渐变

class Point {x: number = 0y: number = 0
}@Entry
@Component
struct Page57 {@State message: string = 'Hello World';//输入start=(0,0),end=(1,1)实现左上到右下渐变private calculateGradientAngle(start: Point, end: Point): number {// 计算两点之间的向量const dx = end.x - start.x;const dy = end.y - start.y;// 使用 Math.atan2(dy, dx) 计算角度// Math.atan2 返回的是弧度值,需要转换为角度const radian = Math.atan2(dy, dx);const degree = radian * (180 / Math.PI);console.info(`degree:${degree}`)// 根据实际情况调整角度// 从左上角到右下角的角度通常是 45 度return (90 + degree) % 360;}build() {Column() {Text('背景渐变')Row() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//.blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN)}.linearGradient({angle: this.calculateGradientAngle({ x: 0, y: 0 }, { x: 1, y: 1 }),colors: [[0xff0000, 0.0], [0x0000ff, 1.0]]}) //.blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)Text('文字渐变')Row() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold).blendMode(BlendMode.DST_IN, BlendApplyType.OFFSCREEN)}.linearGradient({angle: this.calculateGradientAngle({ x: 0, y: 0 }, { x: 1, y: 1 }),colors: [[0xff0000, 0.0], [0x0000ff, 1.0]]}).blendMode(BlendMode.SRC_OVER, BlendApplyType.OFFSCREEN)}.width('100%').height('100%')}
}


http://www.mrgr.cn/news/37223.html

相关文章:

  • 程序员如何提升核心竞争力以应对技术变革与挑战
  • 实战OpenCV之色彩空间转换
  • LabVIEW提高开发效率技巧----并行处理
  • 使用PyTorch进行自然语言处理:实现一个文本分类函数
  • Redis实战--Redis应用过程中出现的热门问题及其解决方案
  • XSS | DOM 型 XSS 攻击
  • MySQL基础知识(三)
  • 定时任务上云改造方案
  • HI3521DV200 22AP10/SS524V100 芯片及开发板
  • GNU链接器(LD):PHDRS 命令用法及实例详解
  • 解决图片放大模糊
  • 多线程计算π
  • C语言 | Leetcode C语言题解之第440题字典序的第K小数字
  • LM393 电压比较器和典型电路
  • DSP——从入门到放弃系列——多核导航器(持续更新)
  • C++中的动态图形与音频同步:实现罗盘时钟与音乐播放器
  • Flask 本地测试完成,如何部署到网络上,买什么样的空间
  • HarmonyOS异常处理实践
  • VC++同时处理ANSI和Unicode字符集,除了使用TCHAR和_T()宏外,还有其他方法可以实现吗?
  • 基于51单片机的方向盘模拟系统