怎么将资源赋值给绘制的颜色属性,两个类型之间是怎么转换的?

怎么将资源赋值给绘制的颜色属性,

context.fillStyle = $r('app.color.other_chart_line')

两个类型之间是怎么转换的。

HarmonyOS
2024-09-29 13:04:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

在引用资源类型时,需要确认该属性方法支持Resource,例如backgroundColor属性类型支持ResourceColor,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-universal-attributes-background-V5

context.fillStyle属性不支持使用Resource类型,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-canvasrenderingcontext2d-V5

可以在Resource资源中定义全局需要的颜色。如果属性支持Resource,可直接使用$r(‘app.color.test’)如果属性不支持,可通过resourceManager.getColorByName()方法获取:参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-resource-manager-V5

参考demo:

let context = getContext(this)  
  
@Entry  
@Component  
struct fillStyle {  
  private settings: RenderingContextSettings = new RenderingContextSettings(true)  
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings)  
  
  build() {  
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {  
      Canvas(this.context)  
        .width('100%')  
        .height('100%')  
        .backgroundColor($r('app.color.backgroundColorCanvas'))  
        .onReady(async () => {  
          const value: number = await context.resourceManager.getColorByName("fillStyle")  
          const fillStyle = '#' + value.toString(16).slice(2);  
          this.context.fillStyle = fillStyle;  
          this.context.fillRect(20, 20, 150, 100)  
        })  
    }  
    .width('100%')  
    .height('100%')  
  }  
}
分享
微博
QQ
微信
回复
2024-09-29 17:42:13
相关问题
HarmonyOS 两个枚举类型之间转换问题
134浏览 • 1回复 待解决
有计算两个日期之间时间util接口吗
1809浏览 • 1回复 待解决
canvas怎么绘制资源目录下图片
662浏览 • 1回复 待解决
怎么判断一类型stirng
811浏览 • 1回复 待解决
判断两个日期同一周内日期。
527浏览 • 1回复 待解决
HarmonyOS Resource怎么进行转换类型
599浏览 • 1回复 待解决
HarmonyOS 两个同级组件问题
408浏览 • 1回复 待解决
关于Image组件两个问题
400浏览 • 1回复 待解决
TextField怎么某段文字设置颜色
8977浏览 • 2回复 待解决