当前位置:   article > 正文

02. 快速上手!HarmonyOS4.0 Image组件详解_harmonyos 4.0 arkts image 图片样式

harmonyos 4.0 arkts image 图片样式

目录

主要内容(思维导图)

1. 组件介绍

2. 组件的使用

2.1. 网络图片的使用

2.1.1. 案例展示

2.1.2. 效果展示

2.2. 本地图片访问

3. 基于Image组件的属性

3.1. objectFit

3.1.1. 代码案例

3.1.2. 效果展示

3.1.3. objectFit属性

名称

描述

Contain

保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。

Cover

保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。

Auto

自适应显示

Fill

不保持宽高比进行放大缩小,使得图片充满显示边界。

ScaleDown

保持宽高比显示,图片缩小或者保持不变。

None

保持原有尺寸显示。

3.2. renderMode

3.2.1. 代码案例

3.2.2. 效果演示

3.2.3. Image组件其他属性

4. Image组件通用案例

4.1. 自定义形状

4.2. 自定义圆角

4.3. 图片加载错误

4.4. 效果展示


推荐阅读
从TypeScript入手,驾驭HarmonyOS开发的技术风潮!-------(上篇icon-default.png?t=N7T8http://​  https://ruocheng.blog.csdn.net/article/details/136444192 ​ 
从TypeScript入手,驾驭HarmonyOS开发的技术风潮!-----------(中篇)icon-default.png?t=N7T8https://ruocheng.blog.csdn.net/article/details/136468330

从TypeScript入手,驾驭HarmonyOS开发的技术风潮!-----------(下篇)icon-default.png?t=N7T8https://ruocheng.blog.csdn.net/article/details/136551763

从TypeScript入手,驾驭HarmonyOS开发的技术风潮!-----------(番外篇)icon-default.png?t=N7T8https://ruocheng.blog.csdn.net/article/details/136615369  

01.HarmonyOS4.0 工具安装 --- 启航篇icon-default.png?t=N7T8https://ruocheng.blog.csdn.net/article/details/136640619

主要内容(思维导图

1. 组件介绍

图片(Image)是用来显示图片的组件

2. 组件的使用

2.1. 网络图片的使用

使用网络图片时,需要申请权限ohos.permission.INTERNET

使用Stage模型的应用,需要在module.json5配置文件中声明权限。

  1. "requestPermissions": [
  2. {
  3. // 开发网络请求权限
  4. "name": 'ohos.permission.INTERNET'
  5. }
  6. ],

具体如下图所示:

2.1.1. 案例展示
  1. @Entry
  2. @Component
  3. struct Index {
  4. build() {
  5. Row() {
  6. Column() {
  7. Image('https://p3.itc.cn/q_70/images03/20210610/917db573aca1480cb7b8f4980eed61a7.png')
  8. .width(300)
  9. .height(100)
  10. }
  11. .width('100%')
  12. }
  13. .height('100%')
  14. }
  15. }

2.1.2. 效果展示

申请权限

未申请权限

2.2. 本地图片访问

本地图片访问时使用的是$r , 图片资源存放的位置是 src > main > resources > base > media

注意: 本地访问的话 格式为 $r('app.media.图片名字')

  1. Image($r('app.media.harmonyOs'))
  2. .width(300)
  3. .height(100)

3. 基于Image组件的属性

3.1. objectFit

设置图片的填充效果。默认值:ImageFit.Cover

3.1.1. 代码案例
  1. @Entry
  2. @Component
  3. struct ImageNote {
  4. build() {
  5. Column() {
  6. Row(){
  7. Text('图片填充效果').fontSize(30).fontColor('#ccc').padding(10)
  8. }.width('100%').justifyContent(FlexAlign.Start)
  9. Row({space:20}){
  10. Column(){
  11. Image($r('app.media.myImage'))
  12. .width(100)
  13. .height(100)
  14. .objectFit(ImageFit.Fill)
  15. Text('Fill效果').fontSize(20)
  16. }
  17. Column(){
  18. Image($r('app.media.myImage'))
  19. .width(100)
  20. .height(100)
  21. .objectFit(ImageFit.Cover)
  22. Text('Cover效果').fontSize(20)
  23. }
  24. Column(){
  25. Image($r('app.media.myImage'))
  26. .width(100)
  27. .height(100)
  28. .objectFit(ImageFit.Auto)
  29. Text('Auto效果').fontSize(20)
  30. }
  31. Column(){
  32. Image($r('app.media.myImage'))
  33. .width(100)
  34. .height(100)
  35. .objectFit(ImageFit.Contain)
  36. Text('Contain效果').fontSize(20)
  37. }
  38. }.width('100%')
  39. .height(150)
  40. Row({space:20}){
  41. Column(){
  42. Image($r('app.media.myImage'))
  43. .width(100)
  44. .height(100)
  45. .objectFit(ImageFit.Contain)
  46. Text('Contain效果').fontSize(20)
  47. }
  48. }.width('100%')
  49. .height(150)
  50. }
  51. .width('100%')
  52. }
  53. }
3.1.2. 效果展示

3.1.3. objectFit属性
名称
描述
Contain
保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内。
Cover
保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界。
Auto
自适应显示
Fill
不保持宽高比进行放大缩小,使得图片充满显示边界。
ScaleDown
保持宽高比显示,图片缩小或者保持不变。
None
保持原有尺寸显示。

3.2. renderMode

设置图片的渲染模式为原色或黑白。

默认值:ImageRenderMode.Original

注意: svg类型图源不支持该属性。

3.2.1. 代码案例

renderMode

3.2.2. 效果演示

3.2.3. Image组件其他属性

名称

参数类型

描述

alt

string | Resource

加载时显示的占位图,支持本地图片(png、jpg、bmp、svg和gif类型),不支持网络图片。

默认值:null

从API version 9开始,该接口支持在ArkTS卡片中使用。

objectFit

ImageFit

设置图片的填充效果。

默认值:ImageFit.Cover

从API version 9开始,该接口支持在ArkTS卡片中使用。

objectRepeat

ImageRepeat

设置图片的重复样式。从中心点向两边重复,剩余空间不足放下一张图片时会截断。

默认值:ImageRepeat.NoRepeat

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

svg类型图源不支持该属性。

interpolation

ImageInterpolation

设置图片的插值效果,即减轻低清晰度图片在放大显示时出现的锯齿问题。

默认值:ImageInterpolation.None

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

svg类型图源不支持该属性。

PixelMap资源不支持该属性。

renderMode

ImageRenderMode

设置图片的渲染模式为原色或黑白。

默认值:ImageRenderMode.Original

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

svg类型图源不支持该属性。

sourceSize

{

width: number,

height: number

}

设置图片解码尺寸,降低图片的分辨率,常用于需要让图片显示尺寸比组件尺寸更小的场景。和ImageFit.None配合使用时可在组件内显示小图。

单位:px

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

仅在目标尺寸小于图源尺寸时生效。

svg类型图源不支持该属性。

PixelMap资源不支持该属性。

matchTextDirection

boolean

设置图片是否跟随系统语言方向,在RTL语言环境下显示镜像翻转显示效果。

默认值:false

从API version 9开始,该接口支持在ArkTS卡片中使用。

fitOriginalSize

boolean

图片组件尺寸未设置时,显示尺寸是否跟随图源尺寸。

组件不设置宽高或仅设置宽/高时,该属性不生效。

默认值:false

从API version 9开始,该接口支持在ArkTS卡片中使用。

fillColor

ResourceColor

设置填充颜色,设置后填充颜色会覆盖在图片上。

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

仅对svg图源生效,设置后会替换svg图片的填充颜色。

autoResize

boolean

设置图片解码过程中是否对图源自动缩放。设置为true时,组件会根据显示区域的尺寸决定用于绘制的图源尺寸,有利于减少内存占用。如原图大小为1920x1080,而显示区域大小为200x200,则图片会自动解码到200x200的尺寸,大幅度节省图片占用的内存。

默认值:true

从API version 9开始,该接口支持在ArkTS卡片中使用。

syncLoad8+

boolean

设置是否同步加载图片,默认是异步加载。同步加载时阻塞UI线程,不会显示占位图。

默认值:false

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

建议加载尺寸较小的本地图片时将syncLoad设为true,因为耗时较短,在主线程上执行即可。

copyOption9+

CopyOptions

设置图片是否可复制。

当copyOption设置为非CopyOptions.None时,支持使用长按、鼠标右击、快捷组合键'CTRL+C'等方式进行复制。

默认值:CopyOptions.None

从API version 9开始,该接口支持在ArkTS卡片中使用。

说明:

svg图片不支持复制。

colorFilter9+

ColorFilter

给图像设置颜色滤镜效果,入参为一个的4x5的RGBA转换矩阵。

矩阵第一行表示R(红色)的向量值,第二行表示G(绿色)的向量值,第三行表示B(蓝色)的向量值,第四行表示A(透明度)的向量值,4行分别代表不同的RGBA的向量值。

RGBA值分别是0和1之间的浮点数字,当矩阵对角线值为1时,保持图片原有色彩。

计算规则:

如果输入的滤镜矩阵为:

  1. [ r_1, r_2, r_3, r_4, r_5,
  2. g_1, g_2, g_3, g_4, g_5,
  3. b_1, b_2, b_3, b_4, b_5,
  4. a_1, a_2, a_3, a_4, a_5 ]

像素点为[R, G, B, A]

则过滤后的颜色为 [R’, G’, B’, A’]

  1. R’ = r_1*R + r_2*G + r_3*B + r_4*A + r_5
  2. G’ = g_1*R + g_2*G + g_3*B + g_4*A + g_5
  3. B’ = b_1*R + b_2*G + b_3*B + b_4*A + b_5
  4. A’ = a_1*R + a_2*G + a_3*B + a_4*A + a_5

从API version 9开始,该接口支持在ArkTS卡片中使用。

draggable9+

boolean

设置组件默认拖拽效果,设置为true时,组件可拖拽。

不能和拖拽事件事件同时使用。

默认值:false

4. Image组件通用案例

4.1. 自定义形状

  1. Column() {
  2. Image($r('app.media.myImage'))
  3. .width(100)
  4. .height(100)
  5. .borderRadius(50)
  6. Text('自定义形状').fontSize(20)
  7. }

4.2. 自定义圆角

  1. Column() {
  2. Image($r('app.media.myImage'))
  3. .width(100)
  4. .height(100)
  5. .borderRadius(10)
  6. Text('自定义圆角').fontSize(20)
  7. }

4.3. 图片加载错误

  1. ....
  2. @State myImgData: string = 'https://imssg2.baidu.com/it/u=42836227,536469854&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
  3. ....
  4. Column() {
  5. Image(this.myImgData)
  6. .width(100)
  7. .height(100)
  8. .borderRadius(10)
  9. .onError(()=>{
  10. // 图片加载错误, 重新复制
  11. // console.log()
  12. this.myImgData = 'https://img2.baidu.com/it/u=42836227,536469854&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800'
  13. })
  14. Text('图片加载错误').fontSize(20)
  15. }

4.4. 效果展示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/712636
推荐阅读
相关标签
  

闽ICP备14008679号