HarmonyOS Image($r('app.media.backspace')),怎么给图标着色

HarmonyOS
2024-12-26 14:00:57
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

可以用colorFilter来实现:

@Entry
@Component
struct Index {
  // #C7EDCC
  @State color: number[] = [0.78, 0, 0, 0, 0,
    0, 0.93, 0, 0, 0,
    0, 0, 0.80, 0, 0,
    0, 0, 0, 1, 0]
  build() {
    Row() {
      Column() {
        Image($r("app.media.backspace"))
          .width("50%")
          .colorFilter(this.color)
        Button('切换颜色').onClick(() => {
          // #FAF9DE
          this.color = [0.98, 0, 0, 0, 0,
            0, 0.976, 0, 0, 0,
            0, 0, 0.817, 0, 0,
            0, 0, 0, 1, 0]
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

将纯白色转换为#C7EDCC颜色矩阵原理示例

设置红色通道: 我们将红色通道的值设置为 199/255 ≈ 0.78。这样,红色通道的影响将保持在 #C7EDCC 的红色部分。

设置绿色通道: 我们将绿色通道的值设置为 237/255 ≈ 0.93。这样,绿色通道的影响将保持在 #C7EDCC 的绿色部分。

设置蓝色通道: 我们将蓝色通道的值设置为 204/255 ≈ 0.80。这样,蓝色通道的影响将保持在 #C7EDCC 的蓝色部分。

设置透明通道: 透明通道的值保持不变,通常为 1。

其原理为:ColorMatrixFilter(颜色矩阵滤镜) 是一种用于处理图片颜色的滤镜。它基于一个4行5列的二维矩阵,其中每一行表示红色、绿色、蓝色和透明通道的影响,而前四列与原图色值相乘,再加上第五列的偏差值,即为新的色值。

参考:

https://blog.csdn.net/wangwen_22/article/details/109581117

分享
微博
QQ
微信
回复
2024-12-26 16:25:33
相关问题
HarmonyOS Image组件着色属性
153浏览 • 1回复 待解决
HarmonyOS image图标怎么变成其他的颜色
1313浏览 • 1回复 待解决
HarmonyOS 如何image设置遮罩 ?
533浏览 • 1回复 待解决
怎么打包出个APP测试安装运行
2568浏览 • 1回复 待解决
如何Image组件动态更改图片?
889浏览 • 1回复 待解决
如何将app.media.app_icon,转换为PixelMap
2330浏览 • 1回复 待解决
HarmonyOS 如何 app 添加水印
633浏览 • 1回复 待解决
HarmonyOS 偶现app图标显示错误
242浏览 • 1回复 待解决
需要调用image的colorfilter来着色
790浏览 • 1回复 待解决