繪制組件的父組件

2024-01-22 18:06 更新

繪制組件的父組件,父組件中會描述所有繪制組件均支持的通用屬性。

1、繪制組件使用Shape作為父組件,實現(xiàn)類似SVG的效果。

2、繪制組件單獨使用,用于在頁面上繪制指定的圖形。

說明

該組件從API Version 7開始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標單獨標記該內(nèi)容的起始版本。

子組件

包含Rect、Path、Circle、EllipsePolyline、Polygon、ImageText、Column、Row子組件。

接口

Shape(value?: PixelMap)

從API version 9開始,該接口支持在ArkTS卡片中使用,卡片中不支持使用PixelMap對象。。

參數(shù):

參數(shù)名

參數(shù)類型

必填

默認值

參數(shù)描述

value

PixelMap

-

繪制目標,可將圖形繪制在指定的PixelMap對象中,若未設置,則在當前繪制目標中進行繪制。

屬性

除支持通用屬性外,還支持以下屬性:

名稱

類型

默認值

描述

viewPort

{

x?: number | string,

y?: number | string,

width?: number | string,

height?: number | string

}

{ x:0, y:0, width:0, height:0 }

形狀的視口。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

該屬性若為string類型, 暫不支持百分比。

異常值按照默認值處理。

fill

ResourceColor

Color.Black

設置填充區(qū)域顏色。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

異常值按照默認值處理。

fillOpacity

number | string | Resource

1

設置填充區(qū)域透明度。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

異常值按照默認值處理。

stroke

ResourceColor

-

設置邊框顏色,不設置時,默認沒有邊框線條。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

異常值不會繪制邊框線條。

strokeDashArray

Array<Length>

[]

設置邊框間隙。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

異常值按照默認值處理。

strokeDashOffset

number | string

0

邊框繪制起點的偏移量。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

異常值按照默認值處理。

strokeLineCap

LineCapStyle

LineCapStyle.Butt

設置邊框端點繪制樣式。

從API version 9開始,該接口支持在ArkTS卡片中使用。

strokeLineJoin

LineJoinStyle

LineJoinStyle.Miter

設置邊框拐角繪制樣式。

從API version 9開始,該接口支持在ArkTS卡片中使用。

strokeMiterLimit

number | string

4

設置斜接長度與邊框?qū)挾缺戎档臉O限值。斜接長度表示外邊框外邊交點到內(nèi)邊交點的距離,邊框?qū)挾燃磗trokeWidth屬性的值。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

該屬性取值需在strokeLineJoin屬性取值LineJoinStyle.Miter時生效。 該屬性的合法值范圍應當大于等于1.0,當取值范圍在[0,1)時按1.0處理,其余異常值按默認值處理

strokeOpacity

number | string | Resource

1

設置邊框透明度。

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

該屬性的取值范圍是[0.0, 1.0],若給定值小于0.0,則取值為0.0;若給定值大于1.0,則取值為1.0,其余異常值按1.0處理 。

strokeWidth

number | string

1

設置邊框?qū)挾取?/p>

從API version 9開始,該接口支持在ArkTS卡片中使用。

說明:

該屬性若為string類型, 暫不支持百分比。

異常值按照默認值處理。

antiAlias

boolean

true

是否開啟抗鋸齒效果。

從API version 9開始,該接口支持在ArkTS卡片中使用。

mesh8+

Array<number>,number,number

[],0,0

設置mesh效果。第一個參數(shù)為長度(column + 1)* (row + 1)* 2的數(shù)組,它記錄了扭曲后的位圖各個頂點位置,第二個參數(shù)為mesh矩陣列數(shù)column,第三個參數(shù)為mesh矩陣行數(shù)row。

從API version 9開始,該接口支持在ArkTS卡片中使用。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct ShapeExample {
  5. build() {
  6. Column({ space: 10 }) {
  7. Text('basic').fontSize(11).fontColor(0xCCCCCC).width(320)
  8. // 在Shape的(-2, -2)點繪制一個 300 * 50 帶邊框的矩形,顏色0x317AF7,邊框顏色黑色,邊框?qū)挾?,邊框間隙20,向左偏移10,線條兩端樣式為半圓,拐角樣式圓角,抗鋸齒(默認開啟)
  9. // 在Shape的(-2, 58)點繪制一個 300 * 50 帶邊框的橢圓,顏色0x317AF7,邊框顏色黑色,邊框?qū)挾?,邊框間隙20,向左偏移10,線條兩端樣式為半圓,拐角樣式圓角,抗鋸齒(默認開啟)
  10. // 在Shape的(-2, 118)點繪制一個 300 * 10 直線路徑,顏色0x317AF7,邊框顏色黑色,寬度4,間隙20,向左偏移10,線條兩端樣式為半圓,拐角樣式圓角,抗鋸齒(默認開啟)
  11. Shape() {
  12. Rect().width(300).height(50)
  13. Ellipse().width(300).height(50).offset({ x: 0, y: 60 })
  14. Path().width(300).height(10).commands('M0 0 L900 0').offset({ x: 0, y: 120 })
  15. }
  16. .viewPort({ x: -2, y: -2, width: 304, height: 130 })
  17. .fill(0x317AF7)
  18. .stroke(Color.Black)
  19. .strokeWidth(4)
  20. .strokeDashArray([20])
  21. .strokeDashOffset(10)
  22. .strokeLineCap(LineCapStyle.Round)
  23. .strokeLineJoin(LineJoinStyle.Round)
  24. .antiAlias(true)
  25. // 分別在Shape的(0, 0)、(-5, -5)點繪制一個 300 * 50 帶邊框的矩形,可以看出之所以將視口的起始位置坐標設為負值是因為繪制的起點默認為線寬的中點位置,因此要讓邊框完全顯示則需要讓視口偏移半個線寬
  26. Shape() {
  27. Rect().width(300).height(50)
  28. }
  29. .viewPort({ x: 0, y: 0, width: 320, height: 70 })
  30. .fill(0x317AF7)
  31. .stroke(Color.Black)
  32. .strokeWidth(10)
  33. Shape() {
  34. Rect().width(300).height(50)
  35. }
  36. .viewPort({ x: -5, y: -5, width: 320, height: 70 })
  37. .fill(0x317AF7)
  38. .stroke(Color.Black)
  39. .strokeWidth(10)
  40. Text('path').fontSize(11).fontColor(0xCCCCCC).width(320)
  41. // 在Shape的(0, -5)點繪制一條直線路徑,顏色0xEE8443,線條寬度10,線條間隙20
  42. Shape() {
  43. Path().width(300).height(10).commands('M0 0 L900 0')
  44. }
  45. .viewPort({ x: 0, y: -5, width: 300, height: 20 })
  46. .stroke(0xEE8443)
  47. .strokeWidth(10)
  48. .strokeDashArray([20])
  49. // 在Shape的(0, -5)點繪制一條直線路徑,顏色0xEE8443,線條寬度10,線條間隙20,向左偏移10
  50. Shape() {
  51. Path().width(300).height(10).commands('M0 0 L900 0')
  52. }
  53. .viewPort({ x: 0, y: -5, width: 300, height: 20 })
  54. .stroke(0xEE8443)
  55. .strokeWidth(10)
  56. .strokeDashArray([20])
  57. .strokeDashOffset(10)
  58. // 在Shape的(0, -5)點繪制一條直線路徑,顏色0xEE8443,線條寬度10,透明度0.5
  59. Shape() {
  60. Path().width(300).height(10).commands('M0 0 L900 0')
  61. }
  62. .viewPort({ x: 0, y: -5, width: 300, height: 20 })
  63. .stroke(0xEE8443)
  64. .strokeWidth(10)
  65. .strokeOpacity(0.5)
  66. // 在Shape的(0, -5)點繪制一條直線路徑,顏色0xEE8443,線條寬度10,線條間隙20,線條兩端樣式為半圓
  67. Shape() {
  68. Path().width(300).height(10).commands('M0 0 L900 0')
  69. }
  70. .viewPort({ x: 0, y: -5, width: 300, height: 20 })
  71. .stroke(0xEE8443)
  72. .strokeWidth(10)
  73. .strokeDashArray([20])
  74. .strokeLineCap(LineCapStyle.Round)
  75. // 在Shape的(-80, -5)點繪制一個封閉路徑,顏色0x317AF7,線條寬度10,邊框顏色0xEE8443,拐角樣式銳角(默認值)
  76. Shape() {
  77. Path().width(200).height(60).commands('M0 0 L400 0 L400 150 Z')
  78. }
  79. .viewPort({ x: -80, y: -5, width: 310, height: 90 })
  80. .fill(0x317AF7)
  81. .stroke(0xEE8443)
  82. .strokeWidth(10)
  83. .strokeLineJoin(LineJoinStyle.Miter)
  84. .strokeMiterLimit(5)
  85. }.width('100%').margin({ top: 15 })
  86. }
  87. }

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號