HarmonyOS app模块拆分,图标在A模块,A模块绘制绘制不出来,但A不是根模块

在varietydetail模块是绘制模块且存放资源图片的模块,app是工程启动模块。此时发现的问题是:如果把图片放到varietydetail模块中无法绘制出来。只有放在app工程启动模块才能绘制出来,文档中说图片资源相对根路径是在src中,但没说是在哪个模块的src。

HarmonyOS
2024-08-10 10:54:59
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

单HAP包资源通过"r"或"rawfile"引用资源,跨HAP/HSP包资源通过createModuleContext(moduleName)接口创建同应用中不同module的上下文,获取resourceManager对象后,调用不同接口访问不同资源。例如:getContext.createModuleContext(moduleName).resourceManager.getStringByNameSync(‘app.string.XXX’)。文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/resource-categories-and-access-0000001774119914#section096641316342

demo可参考示例:https://developer.huawei.com/consumer/cn/doc/harmonyos-samples/samples-0000001162414961

将videoFeature\src\main\ets\pages\Index.ets文件里加入图片绘制代码

private settings: RenderingContextSettings = new RenderingContextSettings(true) 
private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 
private img:ImageBitmap = new ImageBitmap("resources/base/media/icon.png") 
Canvas(this.context) 
  .width('50%') 
  .height('50%') 
  .onReady(() =>{ 
    this.context.drawImage( this.img,10, 10 , 20, 20) 
  })

本地模拟情况是成功绘制的ImageBitmap方法中的参数是图片路径,hsp包中无法使用路径,只能使用Resource获取资源,所以就不能使用ImageBitmap方法。drawImage方法支持ImageBitmap或PixelMap,这里就使用PixelMap类型作为参数。

参考demo:

// library模块 Index.ets 
import { image } from '@kit.ImageKit'; 
@Entry 
@Component 
export struct Index { 
  private settings: RenderingContextSettings = new RenderingContextSettings(true) 
  private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) 
  @State imgPixelMap: PixelMap | null = null 
  async aboutToAppear() { 
    let imageBuffer: Uint8Array = await getContext().createModuleContext('library').resourceManager.getMediaContent($r('app.media.gg_djgcw')) 
    const imageSource : image.ImageSource = image.createImageSource(imageBuffer.buffer); 
    imageSource.createPixelMap().then((pixelMap: PixelMap) => { 
      this.imgPixelMap = pixelMap 
      this.context.drawImage(this.imgPixelMap,10, 10 , 20, 20) 
    }) 
  } 
  build() { 
    Row() { 
      Column() { 
        Canvas(this.context) 
          .width('50%') 
          .height('50%') 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-08-10 17:33:03
相关问题
如何在HSP模块切换视图
148浏览 • 1回复 待解决
HarmonyOS 项目框架模块搭建
151浏览 • 1回复 待解决
Native侧进行跨模块加载
442浏览 • 1回复 待解决
HarmonyOS entry模块声明的问题
107浏览 • 1回复 待解决
HarmonyOS @Expend跨模块使用问题
125浏览 • 1回复 待解决
HarmonyOS NAPI调用HAR模块失败
42浏览 • 1回复 待解决
python 如何安装 redis 模块
3361浏览 • 1回复 待解决
多个feature模块的问题
1511浏览 • 1回复 待解决
如何配置模块源码路径
427浏览 • 1回复 待解决
HarmonyOS fs模块读取文件的问题
109浏览 • 1回复 待解决
HarmonyOS 工程能否依赖外部模块源码
101浏览 • 1回复 待解决
HarmonyOS 怎么跨模块路由跳转界面
189浏览 • 1回复 待解决
HarmonyOS C++模块引用解决方案
58浏览 • 1回复 待解决
HarmonyOS共享模块HAR的代码混淆问题
125浏览 • 1回复 待解决
模块间页面跳转怎么跳
159浏览 • 1回复 待解决
模块签名配置DevEcoStudio报错
7168浏览 • 2回复 待解决