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
相关问题
HarmonyOS模块下悬浮窗显示不出来
246浏览 • 1回复 待解决
如何在HSP模块切换视图
293浏览 • 1回复 待解决
HarmonyOS模块的加载机制
161浏览 • 1回复 待解决
HarmonyOS 项目框架模块搭建
327浏览 • 1回复 待解决
Native侧进行跨模块加载
657浏览 • 1回复 待解决
HarmonyOS entry模块声明的问题
202浏览 • 1回复 待解决
HarmonyOS 能否跨模块使用@Styles
175浏览 • 1回复 待解决
HarmonyOS NAPI调用HAR模块失败
289浏览 • 1回复 待解决
HarmonyOS @Expend跨模块使用问题
262浏览 • 1回复 待解决
HarmonyOS 模块生命周期管理
65浏览 • 1回复 待解决
如何配置模块源码路径
565浏览 • 1回复 待解决
多个feature模块的问题
1705浏览 • 1回复 待解决
python 如何安装 redis 模块
3486浏览 • 1回复 待解决