文档管理中心
FAQ应用框架开发UI框架组件使用如何对PNG图标进行着色

如何对PNG图标进行着色

问题现象

如何对PNG图标进行着色,仅更改图标内容部分的颜色,空白部分保持不变?

效果预览

背景知识

colorBlend:为组件添加颜色叠加效果。colorBlend属性会将指定的颜色与图像原始像素进行叠加混合,仅作用于非透明区域。透明区域因alpha通道值为0,不会参与混合计算。

解决方案

采用colorBlend属性结合Image组件的声明式语法实现。

收起
自动换行
深色代码主题
复制
  1. @Entry
  2. @Component
  3. struct Page {
  4. build() {
  5. Column({ space: 20 }) {
  6. Row({ space: 20 }) {
  7. Text('修改过图标');
  8. Image($r('app.media.startIcon'))
  9. .colorBlend(Color.Red)
  10. .height(50)
  11. .width(50);
  12. };
  13. Row({ space: 20 }) {
  14. Text('原始的图标');
  15. Image($r('app.media.startIcon'))
  16. .height(50)
  17. .width(50);
  18. };
  19. }
  20. .justifyContent(FlexAlign.Center)
  21. .height('100%')
  22. .width('100%');
  23. }
  24. }

常见FAQ

Q:使用colorBlend更改颜色,背景由透明变为白色。

A:colorBlend为颜色叠加,不支持仅设置非透明通道颜色,可以采用colorFilter进行替代。

在 FAQ 中进行搜索
请输入您想要搜索的关键词