当前位置:   article > 正文

HarmonyOS实战开发-如何实现自定义绘制颜色条_harmonyos开发 自定义颜色

harmonyos开发 自定义颜色

在做颜色拾取器,圆形或者条状颜色效果,进行选择,选择触摸点的颜色数值。

这种效果非常常见和实用,可以对界面背景,文本颜色就行动态变更。

先看效果:

在这里插入图片描述
1,渲染设置,画布渲染上下文对象

// 渲染设置-抗锯齿
private settings: RenderingContextSettings = 
new RenderingContextSettings(true)
  • 1
  • 2
  • 3

// 颜色条-画布渲染上下文对象

private crcBar: CanvasRenderingContext2D = 
new CanvasRenderingContext2D(this.settings)
  • 1
  • 2

2,创建渐变颜色的范围

// 创建渐变色的范围
const grad = this.crcBar
.createLinearGradient(0, 0, 0, this.barHeight)
  • 1
  • 2
  • 3

3,设置渐变颜色和比例

// 设置渐变颜色和比例。
grad.addColorStop(0, 'rgb(255, 0, 0)')
grad.addColorStop(1 * 1 / 6, 'rgb(255, 255, 0)')
grad.addColorStop(2 * 1 / 6, 'rgb(0, 255, 0)')
grad.addColorStop(3 * 1 / 6, 'rgb(0, 255, 255)')
grad.addColorStop(4 * 1 / 6, 'rgb(0, 0, 255)')
grad.addColorStop(5 * 1 / 6, 'rgb(255, 0, 255)')
grad.addColorStop(1, 'rgb(255, 0, 0)')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

完整代码:

@Entry
@Component
struct Index {
@State message: string = 'Hello World'
// 渲染设置-抗锯齿
private settings: RenderingContextSettings = new RenderingContextSettings(true)
// 颜色条-画布渲染上下文对象
private crcBar: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)
// 颜色条宽度
private barWidth = 0
// 颜色条高度
private barHeight = 0
// 颜色条指示器大小
@State barIndicatorSize: number = 0
build() {
Row() {
Column(){
this.ColorBar();
}
.width(30).height(300)
}
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.Center)
.width('100%')
.height('100%')
}
/**
* 颜色条
*/
@Builder ColorBar() {
Canvas(this.crcBar)
.onAreaChange((oldValue: Area, newValue: Area) => {
// 获取组件的宽高
this.barWidth = parseInt(newValue.width.toString())
this.barHeight = parseInt(newValue.height.toString())
this.barIndicatorSize = this.barWidth / 3
// 创建渐变色的范围
const grad = this.crcBar.createLinearGradient(0, 0, 0, this.barHeight)
// 设置渐变颜色和比例。
grad.addColorStop(0, 'rgb(255, 0, 0)')
grad.addColorStop(1 * 1 / 6, 'rgb(255, 255, 0)')
grad.addColorStop(2 * 1 / 6, 'rgb(0, 255, 0)')
grad.addColorStop(3 * 1 / 6, 'rgb(0, 255, 255)')
grad.addColorStop(4 * 1 / 6, 'rgb(0, 0, 255)')
grad.addColorStop(5 * 1 / 6, 'rgb(255, 0, 255)')
grad.addColorStop(1, 'rgb(255, 0, 0)')
// 设置渐变色
this.crcBar.fillStyle = grad
// 绘制矩形
this.crcBar.fillRect(0, 0, this.barWidth, this.barHeight)
}).width('100%')
.borderWidth(0.5)
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

如果大家还没有掌握鸿蒙,现在想要在最短的时间里吃透它,我这边特意整理了《鸿蒙语法ArkTS、TypeScript、ArkUI、教学视频》以及《鸿蒙生态应用开发白皮书V2.0PDF》《鸿蒙开发学习手册》(共计890页)鸿蒙相关开发资料等…希望对大家有所帮助:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

鸿蒙语法ArkTS、TypeScript、ArkUI等…视频教程:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

OpenHarmony APP开发教程步骤:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

鸿蒙生态应用开发白皮书V2.0PDF:https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG

在这里插入图片描述

南北双向高工技能基础:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

应用开发中高级就业技术:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

全网首发-工业级 南向设备开发就业技术:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

在这里插入图片描述

《鸿蒙开发学习手册》:

如何快速入门:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3.……

在这里插入图片描述

开发基础知识:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……

在这里插入图片描述

基于ArkTS 开发:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/992786
推荐阅读
相关标签
  

闽ICP备14008679号