From b92bc11c458e5425bc6c3e922afbe113e919d0e1 Mon Sep 17 00:00:00 2001 From: lanyill Date: Fri, 14 Oct 2022 15:14:03 +0800 Subject: [PATCH] =?UTF-8?q?canvas=20=E6=96=87=E6=A1=A3=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lanyill --- .../reference/arkui-ts/Readme-CN.md | 6 +- .../figures/zh-cn_image_0000001193872492.png | Bin 31623 -> 122731 bytes .../figures/zh-cn_image_0000001193872498.png | Bin 1421 -> 174804 bytes .../figures/zh-cn_image_0000001194032458.png | Bin 13763 -> 171579 bytes .../figures/zh-cn_image_0000001194032462.png | Bin 1447 -> 192630 bytes .../figures/zh-cn_image_0000001194032480.png | Bin 31623 -> 203635 bytes .../figures/zh-cn_image_0000001194032666.png | Bin 0 -> 258947 bytes .../figures/zh-cn_image_0000001194192436.png | Bin 861 -> 141333 bytes .../figures/zh-cn_image_0000001194192440.png | Bin 3560 -> 139918 bytes .../figures/zh-cn_image_0000001194352436.png | Bin 2832 -> 145179 bytes .../figures/zh-cn_image_0000001238712471.png | Bin 5400 -> 165486 bytes .../figures/zh-cn_image_0000001238832389.png | Bin 550 -> 156156 bytes .../figures/zh-cn_image_0000001238952377.png | Bin 1737 -> 141974 bytes .../figures/zh-cn_image_000000127777778.png | Bin 0 -> 162562 bytes .../figures/zh-cn_image_000000127777779.png | Bin 0 -> 190640 bytes .../figures/zh-cn_image_000000127777780.png | Bin 0 -> 213644 bytes .../figures/zh-cn_image_000000127777781.png | Bin 0 -> 210629 bytes .../arkui-ts/ts-canvasrenderingcontext2d.md | 184 +++++-- .../arkui-ts/ts-components-canvas-canvas.md | 12 +- .../ts-components-canvas-canvasgradient.md | 75 +-- .../ts-components-canvas-imagebitmap.md | 35 +- .../ts-components-canvas-imagedata.md | 36 +- .../arkui-ts/ts-components-canvas-lottie.md | 202 +++++--- .../arkui-ts/ts-components-canvas-path2d.md | 18 +- .../ts-offscreencanvasrenderingcontext2d.md | 475 +++++++++++++----- 25 files changed, 732 insertions(+), 311 deletions(-) create mode 100644 zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194032666.png create mode 100644 zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777778.png create mode 100644 zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777779.png create mode 100644 zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777780.png create mode 100644 zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777781.png diff --git a/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md b/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md index e48fce335e..16e96202cc 100644 --- a/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md +++ b/zh-cn/application-dev/reference/arkui-ts/Readme-CN.md @@ -119,12 +119,12 @@ - 画布组件 - [Canvas](ts-components-canvas-canvas.md) - [CanvasRenderingContext2D对象](ts-canvasrenderingcontext2d.md) - - [OffscreenCanvasRenderingConxt2D对象](ts-offscreencanvasrenderingcontext2d.md) - - [Lottie](ts-components-canvas-lottie.md) - - [Path2D对象](ts-components-canvas-path2d.md) - [CanvasGradient对象](ts-components-canvas-canvasgradient.md) - [ImageBitmap对象](ts-components-canvas-imagebitmap.md) - [ImageData对象](ts-components-canvas-imagedata.md) + - [OffscreenCanvasRenderingContext2D对象](ts-offscreencanvasrenderingcontext2d.md) + - [Path2D对象](ts-components-canvas-path2d.md) + - [Lottie](ts-components-canvas-lottie.md) - 动画 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001193872492.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001193872492.png index 5d649492978121a484c2a7a55d4548384c919149..c564bb26b539f1e48acbdb7f2aeeca8df4e4e798 100644 GIT binary patch literal 122731 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 eF9fnfVEvd|W}Pw@ixyC2?aL>MmS@FV}r%b92Y z4&L)<>VFjv{Jrh|=RrLS0R~uW!VWB;3FCJwff?+V^YMZ}LS2WTGW9&=y%}h)k3a0KQhw$U+2cs0SOGBOOhVjq0*H zaMs$nL#$#vzaFws7Z*|70Ch+0-ZN*{YF_@{c1-*!+UwQ!F%PKgttpu(3|Xj(3<0*P z$P#8N8lw?F>>5j1WS|V^Dzg!qx9E*VH@tx+H%>)r+H#>e*Oy}-2Mi5D_YTw1 zt;1A|8h$S_(b++3zq&p+KF9O^pP(hz8Fy<%xt#gqO6DyOsOv@oup_bo26UZ<-rZ-R zf6tc@YkL3}Q8YWV2B2WrPzghBX^6hvW};uWH}Uk-Paq=~s9s6u3%-X0(xBd@r$4+^ z0(?{w>Xh4uOf+^{Tr|C;p(R3mAAz?@hL1|YuN%@0&FPIMbwN)fVs-eoH`|3g06QBOUDP&j0=U=;L|rznRu~KwaB(0inC>0BDwFgmg3q%Vm>R>YwfOOPHsQ+O2s5p43SoG_>88);m6bKdddCvbY8mOoK z3qYOYOF{#Lh20J>bq-1;plr}m*l=^9=&2(;f{>1SC|Blx@Rs>aK>4s0NXHlh*a-Xu zFYFB5h)N~zg_k-Hi@JbukE|7~KeuDLFm3(4|M}}d{Y;7p>IwORdh6B%^+fonMAWbT z9nvtgP_(}~dR@IXcy-S&n72IbUpb9jfI1uV$Hr|#;H{$JB@A~ErxO-}&ZVLfn_6EM z8X(kf7<^R{luALLuA5*(vm&=u)Msn^W#KjTe+#J7UOVjOZtzt{;jQA~r~W{6@&^LQ z6v_l{SF|z#opTZy+XVq?4!l*O>`bg`H%>);n6p)Mb-(^j3rfB}a=se^)qAr0v8ZD> zcIp@D!}af6zJ5TxSD#k!R&heZrggtXItII(JNNV9dagbH|Nl#uJfNy{Ul1l&D7RFKGs9 z-CzyU(O+oiPB44G+DqNlF+Xk0l9|( z2=2Gnw8_)4TDwkt_^1mxpiW?J-((Ha(4_#Ix(Vv#(Y#4J_^K#*{@o)ZVM9a1$>;w0 z*TX`*o2DY{(upsq~@j29>2>|6iB z5lsJ|_x^L5dQtma5QEU8&e;2K)Nj~BKv}7D1gMQj!7~Lq*)rjWY}7}PdQ?nnG{1PM zBr(ARs_jU*{Coki`2_V)WTF{@y&n>@0ZnR~w(LYUiW$*H`GLASdi)(Ark`;&psx9m zCa(O(7>L4Z>f@j53NIB0?qIvNS%>r-!Tfj7qaa@M{9ZVmaZe{R(XlA6SNqKC9MrjR z$lSE$o0)n1Y-f0rSgr}70p#xhb-ma*x!R^}_DlN|m~cXqMB$=JT#qF$<81u1uV~5y z1*J}7|B>&Fusl0`9NS_v5~E*!*ij3Ll4q5Qc$9xiiO9;ib zgRNjuYvHX@5v8HK>My?96+S8k zN+qLL$91rwtI%HeH}9O=>EQXzLkrhD@Gk&$E>HqGft`sNWpNSZa1kXOK++vp@?H(H zf4!zo4Vamz1epkAqXM!eemoSH1W?S~hU&*}kR5z5Kv*Nvdw z>2Cmab3D1{$^GZThPhq|AA9a`PxmXK&2pX zCu7UD$w-xG0Rp@$!srD?p#AGXy);fGbjI>kk7Ls0iFopfS1@_XcM%p^QDehS`s=MC&W^b*q0 z9v4Me1r=ITe|J$|SX8`d>Vx{wFVfBcb$4U`YrfBGPSR_~^}70N`rvuiwV`W)piY~s zuR4IJ_=U2CW!yP0t(6p}6Rc&xIQ3!qM8A-Mw1%a%EWKzGa08~i@&H1;-jPTRUv&&V z>Wpz6hehp18Q<0T@PpMzLuc8B>q1Qg7qdOK9e_@~tngCt`6eF~&QWS=o!oMB2T=<9 z&vnJk171d;S`8m{2;S-xeAQ_&jrgh~@Ku{|^G!cs&xvPXlU;@`Af~l?)8tSXS~~yd zGK%5-rN!W-c1f(bQqkCRZ~-pom;%iIn@M9qIFV3AqGr5QDty&;q+WguKm1-1zUoJb zVj+z-Z2iiZ4`)#4qT{Y3GC2YkwG!Sc9aeQ1NmHC_*(T+li!_;4v=(akWKuq{W8+#C;0Hz5eM+zpG`fB^L| zQZG+LIwCOr?STkXA4tTOmpTJ4Y5x$)mz;u&sE=%!vw}fg&y5yR&tAo((N5NYihp*a+mUY)*%Z}MdM>%Ls{dFh_8I49c?g2j!E%M`mLV$V#eARwL#hIY)52n=TW={7H;s5Iu0n`ZwLD+So zF=|zsD2r05GVG%wQ*dTl_RAfxT$nXn)O zWiaRcZYZXf!6FGbDMlniyd+t1K{L*uCJG;wi~tplnKPCf;hgNF26VoGl9_`^FL%JCAIWKG_SWB8E7Nr27)b*!CUB@iU;mEi%h9i zk{8qo)N?+rDhV~rysa4awIq^}C+wiE1s?@$210Q(sV>?!c|puIRuv=3HWVJ5H)dS& z;%6!lJ}MSX>ukiSlu<}SxM8c#+Yf?zpn4q?PF8gU37HG<%%pm-icn=c6yUK2uf*Y_ z4}TC-Ot#_MC@7>+?@B^(8GcgMV!{i3U{ybfR?WHO*qNcsJOP@&I2Oj6TU9h>%~*+( z33tI?y$K~gix|YmB)N31uKaG0n9j%}w+{K*$jIfKo5C@_`S<*GW$Wg@O}Fb1)Pu42 zd>aINPXIMfCM@}=D1@qS(7WprjJfkYj2ihiTDN!$7WE~()p=Q9N}WUJHcOF;;ZDGQ zZ9$#PK!Ha4c?mrCN-G4YZ={a|N*{F$5tbF`)8#Xa81gQ9bexG2)|s-)(2JV@bR5q= z{ROhbA*Q$YR|@I`943TSs#FskKY^u2(0OEt`NU*gy;I@tihhW?wFVhGmRKzMh-Q;2 z$VMr&Y+b_$PfSIGI*v4q6*I-9T;M_{Y3o*lMFXW^nEmz-M%@_tJSaRg7-fT1FpJ}4 za(5K-e?kNaW9pTp#$ckew~>JQeTO)mu4Y4U&{t<#*xJ5MJQ-N zYK}+0a@+xGnh1M~I*lDW&%sCiAi(OUcA#mUrMP+EJoM=?3)RX!iTKP%a%|%4XJJ5{ z&eu#7$M}iuWhXM;*nynHOMHpUVH~ zfOZG!>oyOR`Cz-ZjaY>YG|eTDoyY9~F%LZo;(-D|om!Md9mOAiZpYE++i)~`l*2U| zN2Bw3BU=cf(m8F!dJ!0g7s5J@zj%F;6m!-$UtLcqLetM zY^aazM~0zZ&9Shm^Ty&nfthcuK^Dr%PC~ayCb%}{7q+LbV0^x&1*~cnEGiLJm4?dd zXMFhne8gqliA<>i$t0edNJMwc|M(7+2%0HT4y-+6QHSu=%H@Vb^~%jJrl!B(i}vtR ze@M2jRVCnb?0Sc-KKo2Tg4x7WT1VQ0GqXGJ^2U=9;jor8(iB;of_&=!1ob$+*Yh z$EwK04Y-ie2Xp4%iBdtcgm(iBvl0a#ozm_={ny>YB&3m=`k2wHb7~UVdDjDC1%a67 zcV`|c5Y)LXrX$B+ZHHB@lZDU4U$~3^Uk6{&piW4ljJu3d&BURYFrgbP>MZE^^H!%Z zd(INr(7>>T(l)FYr5Wjvg4U>5VjL_2mfUhPUVDs~h%^9bFt`@x7djc4q?CfD2v(Dz zREz*gi24;L&%KFssXoaA4;Xo2_LJH;HP$|e@OxV{IWBZ&gC=B-g*FG!N5OtNPfkIf zvtgAek9hQgMNJo=Wiry-S!bk*qi&Nv4Vu6Lv0+;u_(&FM0;-o@i&Xs25K@7NM_UB? zJZYFg5-@4vHlvP<38wmW|B0dS6?<|rDu(}vMBFd^=Ce#tr|H6mQh4gQcCf0QQXGvn zgdQBb7Rl%hM&MA$P>7pmGQQf-2zUN(0F>GxU`;-F0;Zz!T&f;txsL5R#rZ9>}-xkWC_rI}ja%NirR-+h^YR5V4P`cM`q%^6)=uSFKx<}7>@ z$O)KqcwIt>fZAv4OAB~V_)yDR^2zrGsM0(^@VHi*Iu~&e9-q(!KI%ApR0b^SIKE&1 zIk=$dI3x^*utmd`KR{bq5zNvo-1J%0!kX{ph4ZiMrd3D z%7m^*8iomI>NsjT`ohqsZwL5_^DrI{-Me0dr8Z9y{K}(UJ017Vxh-K?fi#SE5Hu91 zK^SyPd-#aSD;2j5UxjqE7RR|Zw`fhBG)O>Y1gpnnS3p72qUL!dqL*>Xkm>WVYtE#Z zS^l_krMtuw#D0|Y+Jbo7M57;UpYut2Y4eNSz8!~!^EVkKqG|eJdv;KFq%D6d7}SHX z>Cc|4^ z0G)gL8Mb8irFRRCeqnXP1}IhRKCo5_9dY$)e1{~AHk@EucGArMXIiT3yV$yY)mFqMe{4kOXn~Q5x+oX% zKXDu~TI2BX-@w9PCa6m-mk)bLEf)%3AN2>KE_^B>dfF*Y2XowR*WA%?96F+C{pP{&Q@cfRu&OiI zwBdV+2e%7#M^I0aU7bbkg-vJ~CVk)h^$CQc~q{z5(;$YCyV*TUG&R|#1Td%)Oft~!a8K4mduGsOUHhD-v9pu z>7veifuL>?Tj&Y=@#i)~p1%!|7e*E7IutVshtE8NKrcqJFk-+psPiz2b{%OOj*|Zs zxBQOO%z1Je3=g!(d)0vrb>&J&T@(*(DIiN=uTwT2nc|2f&=4$x(7AVjY>D%$r(O`K zbD`}$-3fl`199fjNjqyMwZodm&Y&ReDhP8Iw1mHaolea^5%YD9iJ+*HXa9c?BBQ&? zE=OEA->W%<4Uo=dH0=_eM zEiQ@Xs7(wf6PQr5Kq5}O)m9{3dd;mM>e#lq02-rH!qr}+qpty01aWtZQv*ChV71+z zQ7lOqeJitEX_g@9YySX&IY7N8VVL|+#qeda+u--QefL7LFrd!3_WK1j*Z9Vna>`{_0KqX;e+s0ZNluUXx2qu5w^$inHU zJq|YX{6U>UAvSw7{M0hp(zCBye~A{;$dzd7jttC`he89mm8V}J1${cKLmGO)CTAXo zVctjmVNt(|IppqJ&&aWT+yQAVQ=6z#5rI-+J&ht^iRjq!TU$MY^2QV*-g5o?1f=MX7)%Mes2kwN^QTRcX;|3mzwJ;bACO=5|9UBqLZYMg}^% z0QFZ5Iws-4dkOs1!cDE&>{s5`!hm`zy1-A(mn1D#Dt-M`f_hC{a&VSA(%=4G({xwl zK=`T^A`}?C&Ptxa+}RvM)dGc*{aJa(=K0M-lLA3q$5UY) z^A>z%z)ucj2=QkrU)t64f;xeKnt0W+cgTNqcwjWVRg{FnX~9BgnDfQZH~U2}V}wN_ z!c;757-^UUwB7SsXzH|2PoLQbUTUwHPkhvVB-y?(w&5l~=Fe1d=ng;ihU`X|(fQ@4 zQOHEud^NwqEL4K!`IfA;@fCKRE zM>iQ@%<#Qmk%{M!4GYpy0v)<^60MU$WBvMg@gvy#ra_&+nu_3@C>w_A-Er$05ezH| z?C7wx-)qv0G}PvizBk`wg!-kxU#*4>{X_scYwE8W$vp{}^)^Aba7Pao2Gq|a_kh1z zY4~@};ET_{#zmCJWeL@Er>Wb8dSo1hg5DX?rtS{ZnGvlM>ds@q{PhN?yWeHxrI|@P z&#Q+vngUY(gfAArq|;?ESdx zf`U{O;%pBZg}+Qeq&0N{W;B{fv=Zl?j_0jAHX$2fNN1^EpZ`ge5uL5)ZEuMw!g(R- zc9Ic>Ahl2gIF*72ANpPjiD|&jZyXvFDHw*`!6+Ce^(4bjeTVd%ofrKU6b>}M5Y)8; z|AP;Il)2`;&V9=JxiFv}8PgqBwL+8xZ*>MMzvgbEGA;{GxdU}75WE6$BB?8^YL=nM zxIfO$hW_wXd*Gu^WAP_zCDBQ*EiK>*8jI)myz~42ohF3t})I{~l!;M((R5Yx$1s77@M#81xNW474<&|)GBwSv&1vW6WkWml}J-aqGbuQR9 zXLp4~Z4s)RY1i@!Pg}=l(HUC-5h0Ho z8LSByIdly!p&EWU*cSe3od8VR2HRl6jfQj9?6Y?8GA`YQ;;2*W0b?hUjCM`va4m;Z ziGyKP%Oxhic{MtCX}ag&E7-&)ufd$!z9Xp9v3spSJu0<3{MAy~{ZYaA^iyilm1W1l{_**F$3YF7-v{An zY;RcA0y%$_IT!9U^(=HVlBNz~*%zzCFQ7|tA$X!DCU90AzxJt4S*CcdQin=(8=1Xo@)ashPZX zUnLIR8Pv7;#f-?QQsFKmgf$6OO7QH`YB>&B_v6t(nT3)F@x9B?!V^%d;#bH-3*iL~ zsChws;lgXHsk5*a&18&!r`ho7Cz#a6+A*Y)etv%A_+>|b$8PbKKMNsg^n3Ex5ELr|8Z6#q}~1MK>bWo7X+!djhOuyJpAA~ z&=E}SOcR;{hh+qG$Qx75`8^PZO9;d5_g00EiZpEBDTq#;XMieA7gx@#d>(=M&tt{l zFEP@|5>@f%;RPsHX0-SwSR*ARbCRJ=^8aR^&G)2NIF7`IBT#(~9r+ZG&07~EyckpE z=@W^`aiA(E634ua8;wkLkfb`Q6%Cn!}pNi7>kScpMW-?c1|$mHE{x?aO&U^ zd~<}k8K)t0bi94o`}@H>#wk?HDWHR7($yZOS_uD;rJ}AX={)vjo_e8M%;fQ`gA)1 zU$sgAHc)+oG;|apt9M0?ZP?#0|FsMP)K6lQrfvSc1zV(kx@mKE4JaXCXzL5FFv94l z2qjjz+`i{?skL)i=2Z(n6Vz#XA+TR-Q0ESB@KAk#g$_&HfkYe2Dv)**+`4wYIlr22 z+!fOQP!Hh&BMgDSFy0Gp%LF*nfo;2*Zs#rT001BWNklG4NcvV z;jay->t_exlV!{_WGcH(0e|s1o;XDF0D+OoDfWKqMaoRm(s=Tz4)9j{BxKO4VzGS1 zN-=ksr2?*oK~4J59@~FlY4}OzXd0{%_s=>yahNxk_Wz1G{d5f=G|L2G>|=G{tqw_F zz0`S$@n^}1@sBcXpNCH{qu0GKN<$??gt9C_wAjVNy$|AS!YrxV!@jz{LU1Ie3yS+r zf>pAZ<592TcSyxO#>qzZoxxuX>ZCzrLJ#<;ts=}=U*?ve?I?fhQ+6 zlUxLvUMTo^vQggJFQyQ6uSew9f5kVY;9M3-xl6RQ73{( zlgjIHHsJ+ipp-bNG!Rh;5Ey8dDT&Wlc0i!|6k%!;#y!4J%puzO%0gTMO9C@-u-cxh9&gF44bGnWQ%3fav&M&O(EPay$A z<#aFd4kLW*b7Rug^ZM_iNzuUE1pccX<8=Y*<|4|Fbo%1xc@tx*4@*cJGwsR*?8Cfy zU*UA(C?udBl2IOssExx>-SNl+;}M`X84(|;s9Et-Nvz>QGX=o41a-Zu2*sZ08VIt? zHEiq58a#u3ows1)mT8F2=z>JlL+qsn*t~r(`t^7P{^}1gXRz!-n9o+6kAD*xQZM{k zZMV(wQaCn6h;?L6f)hcxT=5@~ipLF_xB~|Q3Bf%8skjlPi<`x!Qe-Z|yw)QLkAbQF z+5v3}&D`yAr$SRuP24KzY^5>3<@0r`{Be22(`Q{eP>3rpE`#D-8W+6ACnQ6 z-4!XQjhO6)*!<^E4C(W-BzTeDHB0Unhd6U9SoP8w)Jj>0ouclVZ`YKh>t^H_N)IM2Ey5b#=T04s>CAOnh zg`ZKm*e?iBhYb64GOQ{Y5x!e-D*AQ9rcP!v8SYwX>I5+!G|blk{IIPVN_f2|5j(6Z zNx)X>JW5(mpj_y7l=R;YUllE3akR^FD;}aYVAIz5xQNP<0HoWx7K?ymWxuGcm&UCl zJHn!lh)tWdW=0QZv8a}!8M|jVg1QEF)`hwA?(SgNCNp2@@Eh9iJ1Lo)VN`w8&vV^( zUB@K|F{q52`mmJp9;0$04>?IdAj{>39!B}lol@tAbF2@{;IVw?F?#q$B%yQ8fzq5y z#~saI4eA`59z!U;+d}6!dw9Ez!R;sQsSDn?&t5H_`kWv{)uOMp6QAgT!K2a ztPOwOEcQ?)fH2ACOzeUyK4X(7A5|-VzrnoBDBU16v}u~qmo}y7?FUU9jF)bL`yUyK z5U)?A9yftSXSeFCQZ52UV=y^|>H0TR_!I{tXM&-TY=@3h`+x)Rzx!(&3ojA1%k7a` z*!JHkP=X+}Un~zAHq>Nn*^n+#36B5cd+sb4Udh8H_Mhs7Ms+y0O_Hp``s(IsOw>$u zbOxht_M&m!m54k$3mK?nr0+91ia>lVn9~mG6g+Ew=na4MwM6{*s^j?OH)e;j&U}80 zP;2QFSp45lfA)osS|yP)zUnMito%W0l$)j#ySXNB|Mf{o%o7MfDr(}{i6chmzkS7~)&iOx% z(fv4if0rJNPB|ewS*y%fNWhR>vaOZ)^htuR50{7Bn5 z{VS(YIbscV9e7{L2-mw|n6ZX5sN4I_G0=z95+PpCOF|b<^J3lkeTSAC>+D+bMc%o& zHvHyk_j;wH8&D6x_Q+;v-Q*QCZ~7WqHXn}*HrCB{1j@orDi=jnbn09cEt*b8^XAj= z=;M#VCQ&W?O<&FgGQp)B_M94s`|iITH&mU1V6_r{Y7_j`R(XxEeuK_!X5-Uk(~)qQ zhb5OZLf-N&>amY1v}`gBEgMhAputbe^Btebey}iD$4*Vqy3usBX!08N>|JEopxupC zgH}44V#%t}=+g0F6!V)8f3*=-wF6f58^XN5M%VT;v3%teBx8U?M`#m=yEd=I_d!TT zBXsJ}O~%ot*<*6p1b0D>V|M?Zz(|{N1GH_|6Kxv3hStp{AR+7dA_{iLd5FN_bN%qZ zBX^=k<*Bf!RZ@o7Uu}VpT8&y&mSFt288~`w95PVbEhwA7$oXpDt~**co{mD9If zREy!GenS7A3#DW-l?DpVynVSAyy0o%dZ(+dU`nO2a98f}xB+!edR562 z_n5rTV+?r$S6p@<>^|NfJC6;*xpdBRYvC920qIY^$V6q3-&w9X6O|0}5uafyN9=1E z98YeCgJ=4~hSnnVbx5weHDS`g^XhtjJ#=vc>SQPap+)S9SEE@HEV;l4t~}*l*VDG2 zVB>mX_`9AQnqu_x37|Uq#4f=Irh0)hX@;7pne1b~UoQ@={piq1y*tP~`8-gAQ4jjC zWb^*~U)d+NZvr(xvn+xJF^-vGe>BywZM%TeeagS>-2E%+XH&}4v_#F%1d_tE!#-=% z82hh7^*D!D)^81R=5x(Zz)-N*8)>Bhn9rlxtuQ7j_CtfW<^|H0Wg*OGxPR4itj&F# z51JY|KbH}lPl%=#_~b3}^Cjc(YW+Oj7yUh>e#irw&vb?^c_9=$rOH$^G^lG{(Y!&L z=+7Pv-TmAZW`3`?|Jbq0T#p66UhNoMg1Td)=7Ka|9e=x;_gB{*!JHsK0MIsW9pYH< zwp9a&*2wbfLw>)x8n@XGSHJyJ-)Yd&^!cayP|$Ntx)qh)_I9sK(Ae)U8i;7Y?Cu`& z6)$_AT#t(Y?ye2b_a53@9S;-;>enxU9f4UdCUXIqV3zy!`W?&FO`>O99{T+~JfPRy z-}5ZboL(uN|HYurtuVJT+NnnkDL06_`h2B?^4#ZHWF8*y@W8);2maNd{%;_#r;i>W z@bG|#2mVeT@PN9x_SAqF?}dHM3U|C8Rm1Zgje)2d5jifbQLch zIdmnj>?_A^=3=-TCqs61E`_F_rVHs#{$!qj4t3OFrTh4$jYE zpG`i|^GsUn&}oiekA=^$kD;JvFl?3crQ7E7G~es{%=h+Ja}Ej@hU?t_g8Jh2kc@(F zEb4=b_J78y^PmYXSjM)qKUW4Wj?X3Iu`Lq!gHLPYIbKDHZO=U}E)WxV9fgSg zuBbxJy&ezSWMUliJ=4+kvz`O^&-b|s+=b0D3(+BBLaPXN$>3_lhy)HF%W_G5bA&y+= z3L82Zqw7JK^oQBQSIBa2FT9zty-#V&E%^AeVOYGJS(D6CHUC%eD}nqXs$u)l&Uk#nV64>YkKKWueVzOC&Aipv4Y}xXN zjOm8SuMI@c?vJ2SvAHM{vGu?}H6Jk%ck_Fc+2|34#rw`!`PpOe_YWD8wW_>#AbHDj5&SKtJlLQ z8}T+Ogno{ub>GDU559yg+u3iPGr%&%`O%=@-?T6mlAv(KN zA=)eqZ9ciuh~tJgn(bo4|f%I54q@&kDG zjXQ_;KC6sb@7#vj^X%8GdAGsUHD}%^%$YY5bLI^~I(j=ir(jwXM9b?E)FUs{L-lg^ zz)!8i4HZAf$>^sHGse{qm>LQ}y?yIeQVfd6+tqXn>SP9LFWe?+Mz&8bH6Pdgp>`D+ z*9?AYj}!;9sDntlIM2`sT;Joat!wc;wTE?^`x<9v@_0ghOq{pFE9u~Pu|O4nXHE4h z5k@@LjkWGydbtPuq&|KWeANL=n)n$mqM@-1b6jlBbm1In?JNXQ>FsgzkUJ2dzLiRb z>_4kwvaGF-9N--TtJ;Vc#=VPF++m#gT685qr}&2;39S+8^N5@+%3A0}yP{xGQSedc z;H%DH-@#RGcbP0Hd_Ju^Mvb~1!Rm9cXc`OE>3Lw)#w00Nr_?drSaCU4ubUx7=d@YC zl~%3ksf*c_z=l5uqD7NOU{yazVK-KgWcgrL4CO0}srjnIXi)nLtofdW<_N%=Zlu4R z_sn%br9_)BGf)?=&A1t%K5xTE9hW|{=pN@pS1V=Z)C1_!<`Wz}_oAE_X115VkjwpC ze%8;AjPH#A^`6j|hriS=|2dLzt3y8>?a^UC049?9qDKx?NH#G{m=cXK|KWF{^Q`M5@1m&QlyP%0_$~@_m#y6 z^|cf6w&iZy&i$;ye7-J0y?v*0vM5MoGRZ@C?Z-vbxk8Q6aiX~`)aIOat=k%mn1mYT zzIH=Yy^YL7G1=Pl1SVZaoNcw*z7v~u%@s9oZd*0Jj@#cHI z;H|bx*;`gev{#ViBG+YuxftzNvH*&o`oQg2^JB0}2*;V^?g;mJ308FhN@bvg?+V0U z9B2442p+CMUDHt8P0yxxMy<*Z%K{{rvnnU6V6vZFFup1kUMfxMwOds*+Bf|O33$LT zHxz}w>fm>T=2yEc((w%->nLk(Cz@9$uD*w=xilO9;i`lig4z z>O%w>k`~Iwyja!jcU-+vf za;B`V6sqaPwoK5~6*6_7xto0EnQxGR?&5DD@Y;dhoF|&PSQ@(qMhxkX0QIMF<^lQ1 zY@Yze!@ASu&~EZsasSoWb8IfM$RkLSHIVDK$`7Fye%(}m~CIl>vak0jhZwtYIqaW<1ljI zS!ANVp*80vYT*ZN2lcjv0`)-bjcS2g2EB@b{XfIN0Usdc@)Xf#xG-Hk*JPyY3Dhs6 zBp!IQt8qLX!Qm7J^!frf-}DA)x}o9J1}F z(nY)4y5(0{gjySPrD@vdmfP7>R71lCHw!SCnt7SPJ$U5t`FMZHJy`J3aNK(9V+dD2 zg5_{6DowQAvA2JVbUB5JU}RqQwq4De`9D544L4%M@GiKy-x~#9L;Ai6`!y2*>N_Zv z315{4fAu@kFwO~lsYPcXOp13^EAya~9OeNcth-*l_@8+B)tUJAx53!BqbELH)*rpP zkB3F=6k(>1#ygG;Tb7AnpY%tyfwE!{MBwzD5#MWtg4sZh6&HTiT6Lb4Ih3w z1kXJ`2DK{kEPx}1;z14b9HvfPi*z({VKU-;@mXc?($qfiQ(HvPP}>Yvr!jQEa?Jnm zVJuv73!a+z04kUK2o`nLI2fY~1p>)VO!1vz?zVBM65tRD_>e4~v}Gm4==jH(UskMZ+Zhm z20n+B%a7%nLwnoqo|)hG*CnX0_`a5Gk9^fJ1gf3bwrd$Ki(~BS21}+iHTA-R`mejY zAy|DW64+bqMPkMp(G2LMaYfkc5!6|svTeH-@RoB+6Hz(vcch@d>?r7rGcRgq`XVT^ zo_JB|Z30XX)@-UJ<{oM!Jiz4UPRC(GTLUc2|G5WtYN3pqeIgjh)Q?@ z*@zH9qaAz2@Y|8@C~2K6S|h>Hq9U<(zb>1sxBA+o;A*}czoR*XZBmOiBP{GRF=^xO zH3)HN2Y>ahXlXnMa7`mVuov4{8 zfp6CJg1`C}JdE8}T|mw7ov@*Y@n34arsf-r!>79-R4vFkQ3%1+jXhkio=(G$&H0omHuzTUJqJ)Oj zx=Z_RKmz(Z(8Ia!bgHiZtt>2JZl&4j1d=b#lM1u!pR0@f#Y5utj?1|{=P?vSpS-_c zm!Qr=3AXI%j@h%H!tSHvaZwmS6X5Cwd?ldXMb7)Q$kuE(64KWhHa6FQbUlJP>)8i| zw3O{851_tl@M&bp&gWV(6WgNmED))vib`d8*hrj!aj4pZV=dvD{w)W z_HGRXsUu=?`LZi1tsOx2WHdj{A+UOFIo6`}SA9zYam&oFpBmn=VdDSKG`hAy&~reaoIM@K?)3 z%G3UpXn;B;tgDH+K0&=c0bN-Pd{h(` zyu)MgN=pcuyB&^6OB2MFtZ59ZIxIF$Ulotpv)3a7rHu#`0+L>cdVvv8!qKZgox#!K zMD`)}50VxxR0^hEpb^oeIAYK9u0-51aiL0(TArpqJ*t93}a{FDH#<9HlF zodPl)wNN6I;7cIQEh6S*CmU=^Npv790MPBs8k>E7H*00g$yo%Y83D zYg1QoR4qSLOhsabDzy?R7%0HZKI{M4wQ1c>C|3Sj6MkxAj#BaHohNY-HokJ z9gP5l1ld)kqwl{T)U|EPS%SGDwEoUDAe#Tz$q<}WeMkmllqq#{OGxwog@5I9^%l{+ z`Nb3}dcrlRe`z?r_P7OglR@-?xl%`IVd+OE%%6siG~uynLFxr#vBzQEnv?lzIF9!g zQ2I2LjY*0*W*_EMBx( zPW&?Y&GG&pwuB*2Z4vt}BQHK%@*^NV8u#;`jT#6ExW#bpCFAki&Lac09Dp|zdrtI* zMSXAZY9d~IHWC@Q(TH`ox2<{9q#-r@5WM22GGI!~~riqcJ83 zDX4=GHCe`LQJLt~f&%rBWyq14m%Ea z!kHx6o2!EdJ~LrMk2OS+IqZ|KBOY`zM@dA+*2eC`?Sz3cP%MWQxq&k}yEA;%SK_o{ z#KXaT-{jcN^?aB@v#89+gGEgKpa8ClwylQ3Tb(mBz61DU$KsrY&joKEOWyZdizoeR zz^Y~&nolxnmF2me47cOLGoR;pKfmMrl|X>klg7Lzqh;*`3DYZz0L-s{u72ZOq@xnr zcV{%!X?UwF1gafK%6!x9SbyGL9KPyT5n7ChSoGn~fD^EAoa6yBVTj|aj^F^=m1$l| zz$15Yw`FRMOz;WA%z2IBt9A+P34%L!rW?swTr>8y>pTu7!UW^D{q5w8Sb`GoeSiM< zPW>nF4;{__nCAkYMM}nG0~8(S!cpPiTt=W>d!7$`4qg(ebQZB0ON{x--6x%-# z%>9^W0-*8@X)u&lvC3jcWKVgb{?DgTQCw(9_E%Hjacu`# zX(HozW6`2YG_vGmDxFm1_#EyMiv^Ao0pO)&S%) z=-&BubZY+sx^#X8G1(&>v<=M&n)qys0TMgy#2`sqUN!u_cPIw-xdVRcL-?tmU{Qa- zM{Pne->)!cfz|zvjo~Tor>1YUPa?NpTJigm9RNFsanxoTe*Mdd=l8R5RR|b)1kM*h>4EI zh`~BS!9Acjx6Pdy+vi!X7WIn}UY3NXpQJ{ZU&4}JEbL2ocr}SRrZ8nFWzyw)^8qyH z=jR?<;XeB#9vu+q{i>LK2+|MT5s6GRbpl1lwocoMAwV$_gCTT@xMx_LfPh^c;~~e@KHMrP>(_6u_z-U$$5;t zHw(cyk&Q}X_R?!OcR$z{*XvEMC*o>R zF6Xv#Z0dY?3d$qM@{nOiip5jo_Zf~JlSt058lcOeL7jS_?UdV(uFZ}i6K!%dK|8@X z!P=QZ$u{N9uCSqqMMyi9{W@uf z-!aL68V#cWc*P|xmgCsCTgX6=1E|yUzYnRG-o-C}v_<*SFThXjm$s;JnMnvtSfHof zPaVR@VT+N3QQ&!*uLtNThvenJYz&fSc zu`L}Tpy&68&HcfIEgcUYj}@HGwU9Cy3eSf z?|rU_JO!RbzP)XKE3db97H-V4ZYiQ~z*uCqbfTsqQynQjBMUdLEuf35QLVixh zo3GPMVZVpx!3L_2WWDnDV*Vc^9ks=*=J-G7_Z&k2b{-lCf3;fH3D@I-cbIo#+SQ$b zUGq~}+;vZPF}v~qOm6z}t97yy)VokeMaSMp=V$YK4df>O6+{Q#&;Mk=g7evR;jcb4 zqKJ}l&nWxOC@-kDf}i>nJ}O=CX2aHv$VNFMSE4wwB@>utIz6YlUyf@!zcCd3Hv`o5 zVxrdFy=Me`B||J8r9;mm6+`k6#~eI0?sPOofcNvVfT(paLoG4mePdhZ+;L4X60JIF z)#?E+6(bDv#~-^5+o#s%cb=#xwn3f5K~R51m_uuX<{;TNHT8OE-e{a?(*#9sfAoEk z@KZk^!22h7tD~@}bXX;U<2a^GT89?R2IT^Ev#-G@QK}gN)oujHbwIQQ4d`?vMZ&6f zBUtT+zg!34uMQv~g~>(XlBAT5AVeCPx^_Gr#J+v|5$rWzfLMch6hhPngsN{5sP+pO z=rFNZiOas{P9}mh5L1!Kl-dzVdtW1jTkbY&pve*g{@Ic*k%fwe)@;&9zjo^5D-j43 z0JS3`5s%^cdE0GxV!|X08Tc-48MFuwjGc`&>!u^_(lFRWn3(i+ZY%e~(RDL|amQGC z|8>kWv-7@OvIl1~?!*4GV{tP6Uc_JSCpKm}+!&t9j8mS2n!7z}ozK78N#>LE@KVRH zeb*O~ovP>GS+MK-O;8WP%dgc16H~OAAOXiu?Q^g@=RcObeJS|=i71AM;71L6Y9i`Z z{1X{yFB+;jZ@Jseh6THh_7#vMf6$~-x73d~dHzkL<)o(5B*tA!4NRGOD}2;1@Kx!; zv-b>NE&ylp1L?wNZQ0WUzG{;J>PdM1=}2VB;oN#IbN9pX^UG5P7||~T^;B%w;A~S* zM@RUp4boSdQHBqp39mvSd@}(!mDmjdYK{Twu^2VvCpo;E&!@n0><5M9!3*6Gs6H^v z8Oi9`{xD9Zy@q2K#vn3kEMhW7Aqn+ly=l`L$4~7$w+8NR+~!)(JHHH1q^3UQjjHf7 zgs4>|V7Vw3uJ|<&(U<$fs{Vwp%78^3#ooweI1xV-)8;&dk;CU<=uL}o=je~{&O7rE z8S^+&#Lq$OVt-xnbKZVA(x{;K2B_;na)BN`&#){;d(f5?hcjn4i)}BrbRxr1Gg|m% zMfeyRH??YNYM*_w8`(19xrxAmFk_F-v}rPF#Z?mGakrB;wexs=Sk-q1IL9L@X;PjE z)0$lb2J{~QhB;}?ED@E1j$q;Jxj1tECY;T#iKwjF_~UqU+&Ata1gSM(NT0uoMoHgY z2Gf`}brO<7B@l<>B5>$@a~wS16iZj#18=oX7}8fA#E$J-u>V3c96Hwo2hTT_>(Kee zu!)_WW(Ysn;GYBP8eGnxobMT-r@uOihwod5-wxb?GnqFcDytIq9B+;>ca1g53Zxnu z`x)#%INtzuJ;{0zbNg5Vk3Go*5Sn*lP__6*#MquSq990fXS&y|UtJbDW5$d7o=26k zjCnpUz{lMccME1lT{)lAm@xipq=6vJ1?PSNXw4%82QO4XpkyyH)moPuC=*Ie`;_sF zM3nZ5LG#)_;=@IgkcFnW469*Mb7o)y)Sz2hz*oZNxH~$8gOQAbE+PEJ-Cka%HbFfM zOICD*MeQ*7Apv`K(gcxvu{%FAZ+iv(ZZ5NE!SUx(MGe_2+`0dqYo8{XWRybrV$Z`*{0s32RtFG^;V$@2 zx3ziC0QiXFNFF$emUVX{Tph|0t`w3wdp8vUDi&SaZN%P__kkJey0F)^itEPsQLO^Hwb^@xGUk00K_|DrTG9iV- z>_yGtt+s)2uD9L1U7V7R%upCmr_*)qrk?OqYlV2eDh>^+uSQbFWHA}(GNW{glJNTE z`h(~DqI|@2@KNVwA!!qhBdF_1VjuMtj4gXOaITV}lhC8>23$lXCuZVl^#s05RK&(@ z!|~3^!&5WI`!IQVruLZB)ZNB+fJ1%!+KRd!;!O3<02|JjZL>5jHXQq z>YO72*&ZB=dQW^lT zFviWKlMS%p0nzka3m^R~j)Q{Nh6-4?S&TFp>M{;YOwzSfIA>=uq~Auw zUt$Ra3JlJ%DO_}*0R0Zln%o30F@dp-lbAMj4bsuZ%^Xt6Du;=adc#NU5~YJmNX?3? zkdA&%_nb?(RWL!D`;sv4ou6DJD7m6#0HQCqgumBw2C$__@hpb?aZc=}LQT_mmfQ%d z*xzFf-w64V@3sGd{WI4scjlq$Pb^(B2bpMXM1+}h zJ@kd-A-LnA=`(x6qE3m4)>~y5icNwsr!im#tTqGdG8}pxY{h3w7a$8aI?bcIXB6f8 z9GkiZ18SPZ@#J$oCD@I6=Lq*X=Yx8FaI{%Km zKt3u4bt|n!{H13cv@vrI^fPGhUH)wkc&m-lXT8|;qGJ*cvmj|prPJC+vRO6ga|c-3 z=T97nTqMHDZYyWIVQAE_rQt82fZ2)DG4C1?P}=6{$SeB23F^VvcBn5bYE#bKu3VCm zuU{x{TlTqh^&7Q0EzE*&Hl+sw)jA{TBoR+O`~%V@f{CE(JP(d-(dR{(!0>pc;=};5O;a3tWjO3pU=^XlkQh2zWcQYtZJD6G|f7U z#ChxWFOiA?0^oGw(+5JkehQjl+VoKfP@l^fCNGQvk6BZu5lRJ36(vY37&J|h z7N=lQ8(~qa#X;*U)lW6ZvnGyJ9mC5nEtQI{THEIH%`5-;t@#yX2aM8Ilv@ANjt-Zve$jd>0oTEBoGuaAu=AZql? z;5~u0-_newBW133r(x3H0o3h-KN{B)R<%g9EQ>mU-?!6A!FW^+L?)Q6{kah=>acY1 z?lFHNP(5qd*5fd5Ht(t70DO#D^+QZ{F$AfZ@DryU7eOy^+L;~Vt23x48a8#af1HE> z#ANk?RlQ|smPwd4nGV|e#^jj)HD5K8Q7hm!{((n(%2v*l_^v?R?9Xp|x*6esWTL%D zO#9Z*;$79R&SRi#V$ilFiw{xjHTz_~>b~i1SRh_}wTd`PSrCZ}`*bY*3Fd!` z{u-Sf3V*d&A`d8BA}qgP%@1!O9fOdK24aV2D54GRvEsX-2=ksHQ8F4}V$r|v=VCk6 zCLNQJ*$)b@hNw_dr*9L0=$N#sqZm2#1N^alJYq8L7N_jKQ@3K$lo1H=;(Sr-N&ype zLew&(WKv+$zRs9lf>bdysNc!~)OX=b%sT~?Z#6+Z06QWXIkVZ=9i-yR#YxB(GeOa5 z=Zfyy5ls!Z1p4-CEycJA$I9LA{^Q)eYm*2S zgQZJ<|o zmA=OEZ(hXdq_IfE?Kqt@8p~Dv@)nG)tnCC5Ge9s6d2I(NYP zPW45Q_iIv)fJNeb)IR*OmEp83>72Vg(;i*|HLJ3&5_h7kYPt{4O!yedm+r$wG#B3o z?@vcP98c_y4y}j4D$Z=uJ4tE<#iYD0e50)c6uPFRpzyDbW6A^S)B-b50i}!GB->>! z!aGMWG_8dLKnDUSiEdp78K##b_+|U2czZT&OLTrF;l@he!iL^X_mBzad>A1P2rh(| zUiem?rEPwkSj`yjL7iHvX0(NiJHSW%DK>I~b8PY|BjU!reTv!%we{o4)!?sw$q= zYM;&OtdpPuYKq#{?V1lM6j)Q|$!BR|+9raKi@RLFA5|O?>imy;+VQslB%>_?yvI9$ z`sZ?J41d$S$86Q+2=RT%07pif#p2PsRwD^bb4pfge$rJQlTjIWj^*y*fWd!BC>Km6 zag3q)Yo2i5HXWP4bP}e8jaB{nKD=BtHE?z$si&Wfe0F>*+q$h#^Lq-ip z>7dDf3#fD9a7!CwTOx}?YgD->i8~U(r3s)6*Q07=YxE~guqgGb$TE8D@JlrSS8?* zyZ69`1_GJ{UCq}NDCBX{u_UIxaSMv6dGHe_BNM`C@{BXgC^P|Z*Q86$vL9_4?L{j3 zNSj*8AW!Pu`MJc~!Ey~$QYggUd1t-ss`A%}HSon>Zi4`?rw!i{!FLHV#AdI@dI`la zdqFSwso#xk*d#Q)VI5L1TAcNIJdRcZo&A}CI;c~9l%ZIXS7Y$&1}05W5RnGv8pt~r z_TPgLi~6Wq;dT*t)VRqv1A4N;rarBV=ApdKc2k(q0#O<3e;a~HQ=UTx+8XObo7gxv zrg@2imqPtiN)K5BrvIv>l_u^xq;Aq*1nML}0MgJLeiG3@ragh3dsYh=>P`mX`(FmY zOZ_IA%IzbWh`_-VL(9fJjRh5t7hYTqAlzVdmNacE6%R?c8>_C90{5DEoQdul)b#|> zxyVITCZf0zUX_A+mEw_!?nWY#XNI08%roI4tID}!GJa10 z3`H6`!B4$wfO-n{?_Y5Rpzb(!woNUU?bEr&&$%zX2(-2rgqTYuVO2B4c1i|sS}g|Y z=-{B)Gpw=&0=!-jP@|R?qW(bgC|m5D)Zv={;$33j?bz}+7}Sg10kV`(iD&) zECM1HAapD6VOd#0u1fLK64=_H1dKnm#{;rV{g z%sshplJ^Y>#ZTG$$NRf)-rRfcIdf*7Gc#vqj($Il8tBrQJVKWPYi=iE+m26h8r5tt z3PS$}si_~8`7Lkl!|ntBlKmOZp{L71=T!Ms1vv-{-)}4V4+LA9fer0X@Kq!oDN4vb2gLF+dd!R;>(1Iyl~F=`+VXYB;kd>1rxGM$f=<#DVkO_HbEz_*^BaK%S9cRH1HBr|noZ4PWz3S^;e8yQV=~{1Y3imk zoUmJaF^oxlMZG$$L@uthT^tdJ?82B>7W0q6q3F$0Bbpt4`@=etmX9|=h=QrZbnbP_L+$*{grJS=619T@6Rh!aqfeI zI>_Qo|7L)dfGlu>PC<$J3_Ff;(f?R9Hwwd$hZCjpqi))g#tJS)uk6dNL)40>_0h~u z!%HJpOM(Ukje;n0DMsfG5;sSS4LRXDxz6Y3-`COka=pfXfE1LFxGzE3VzmB zJEGwP-d=PHG^14$@%0V`?F_IM4P(i<8I_LPZ+aiUqLyg7WcaUlv#K6TGcble8SgJ) z+O>v1(y}WoARGsOqm~YrNi0(?r>vul(!Dc!a{xZF(JpPz&pfuA8818ujN!v_Y?d1Z|zR!iijKS4d* z;-+L{oA%ym#wZ&C-M2sYMxgbXt*NKr-6cn)T(1H3T-<=bN`JK%I?BsRWZ~`tOfh3B z4C(}J?Q6Yyj|m^r^6|I!BTwS^sU&&h70NDor8XYhtYmEY>QnoUTENfRB7#a6&8n5BY)~!=Xr^6rt&9xZjPjCnL;r9FBHR88`KTtsMuyJ^HFchH zqki$n25&?Tn%KfcA)|&ztBZZ5Hbtd@T4@l1gRU!B5Gz|LNW%boK{M|^*Q>hq5>OR> z)>JW_X-RZwvLC;q4OpSFB)Xc#Zs#8EDQGeZ7yRX`nNrR%bJNhb`OW83(GG#-hl?^r z|9F!+bYt`=;k^oaY9*-V%_4et-rgM*Br%MZ(m{Ok`Glz!UFQXfpH z;&bN1XB(Au#Q*>sDoI2^RQ2Q87tilbzKLJKz22YE`5?G&-^(Z%7Ej|MmV#~HGRe~$ z9n1b(F-_extV9Sz??2bFQ?`>3*?tdl(H;*!)*0m`COrxJV?MMA=4eY>_b`cOrGS2f zbrd;x0t?=`O*A_uq^wMo<8j|y7+rr^XOVnps z0rJG@x(E>SnI>>aXOtEN^`DWP#TC^sNO6KIs0Sjd%%IK%hm1=9<7^w$Q!fap(=y4I zj7<7KebL8^MHkJG;0^-nJZi0~m5MCzlo&qCk3Y6YUk`uDv}G1)CZ6NF@)Y0Ad8&`V@+0lE^%R6(_K|GhnMK_fsHdSO0<5XFfM=jb zhd3#Bl#V;6N?%?6g3~^O}?bP8Tq@j=Omy|Sb ze16c-W|FAJutfTxkEQZ3bzkLWIVLJ8wb7taQ#o!>H(8^Qc4oQ)|+nOm6^V`XHj2UsnlZx6Oz6t z^nd5M!Zaw&?><4@JRF-#Fn&vR>X}|2pSBcX!FNlxSN&?y$U+YfEky~Jh3gSfFzi#93RQX4JYP{&tfG*QFp2dEZ*9t zcIStst603~Xc;wiZfNX7d+|Se)rvBM>TLyA_^x`d2q4LsnMcz5pXp1MekR~WfJMZ`0O;y zp8K_E@FjtzcRne~J1UUbsEeAFpA$C$LvjNw9^7$nL9~zQU-32-v_;^!4%%3|(N@^QG zFMMS`Xif5&YPh;#H#^dYmi#uPot|L#laW0|=dWykpB2;@HdMbh(})SkDVRD5QkR7$ z_t+5|#aFI^teQFnnx^oeLEPOvAR8;UcS(_i3c4b0>yRwkllq^$ch)cYLFK7nz%-N($*b>>!vEY$*GQP2rmJUQ!6N1pn8+EvtCA#^)vL+P=0ssmCW6Gq zt&m#ybdTx$63pnP;)mY@kd3CO67aCh8KYkq#&$A&vb|7}raH%)e`+jIECf$}2Hx`} zvQbOiE*c_f#!MPeD~mw$Mnfcmfv&=GEV7pOWT9AVLnqbv_$~^NzEgQv-)-(QR|V@3 zY~IJbj3`)Ez9>1b{DTo7-bx*qz7@SP{H;1FSD09!S(dYQAUSU+@=>8+F;t60fs6CV z3}$9ZKlmsMozY52hQAe$@4q`_mxn0&9?!oyK0R*l`PZ9Bc@8cn+$(u~!fs^Y>H>K& zMxKpugjO6NVa()>EBucm5kq8-bw5GhOBrDNIv1i*6B^nUH8;jHv1H-5Vm0bJ zl-?}vHg001)Q}>saKRcg<}>7@mCR8dF7wz3)*AlgM;6c<`5X@>XDU7`WTs>BTkC9B zoVs3AHhGRiD8Aa>4Plqfm(Wh`NnB<{Va~h{aY|f!hGyP*fc+&OIP$0NnPWLE(Y^aH z_*vh>&)ST{jF}==Dle1+F4U$?UV{*o)ER!(LYV`)n_6G97FoDMyb#K3rZ4AqJu9el zBlFcsOg;WVe4Kugw2&YvuE*0R6>KD^a2PEu2tOU}iHg=5Sq-)RNs@$Oty#Cu20>*u zZwyo#Q0IgWe}Tl=A?7vDfcjyyEM1NZlpzH6V(?tVF*%Oode zS<=6I5-&Zo5&5`Q4mF_WMa|NDjE2hOl8fbj(G%pkNkomi336qpzphPFhY1K=?9Z?# zc{ZsggfSfMqmSnzQ!-mM5{QDQAVMEx7`{K)S(1-v{ZNapXl=ns+;3~iszs=)p)%&Z z&EjuN^r3Gs8P{FC5viw!ibmvsIu{uAf3rI0Q%~M5)i3GRVU3c$x2}~#l+Ecyh94L& zU+>Dh?Mjr~087FTyB5g-CMsY&AVv9&e$c7&Sgzoh@F-;d$T9L? zDtdSQ85!tdTNUI}J@JctMU9gh=EiTDAW#mqX4YaRBCG?*Ji{|vefz!x%l1Nk1m8TtS;WKsTuOk29w# zUzM=?aA){i3v8`B1-*N1Kq~GjQ1rA9rq5Jr+TptE21p(T<%Vabez1~dj_VcFlrl6w z*Xvn9os)Sqqbq{Sy(yE!)sT!>H+%)M(a9#DAvgs?O=zY;R|y$l`|cR4O(xieG^uvR z`+YM~X+WL*N=I8ngbcE?;nE~i_2CDX;#lfa$d-d;8_EH-IcST$vG<@y*FmzP641jc zX(2H6sjn%f?HYpSpeZU>;gMQ2SJP41+KlgaEkzF6%SlCfXoiHG+mMM)qNS557(H}h zKt08)Pn}x8CtEtAZuQ{^EB6^5dt{27=wkXzAt2xpsA4kfAgBWC^YHLrg5w@cov|2+ zIXsx;dO2K#eddd->}#|9PzX{Q0Sg$jCnS;?88fD17}b-5a{lsNz$!uZ906Pccd-12-W&_;2D{XMX~% zLwIh)3LMX*mCSP#njsxG zUAJzd3I+Z8m8=u!8TlTf;$A?O93sLa2OCRX$MysL(6+^3@B}q#=yXB0sJ9#$c*ukI zl}DU8EIbdT`MngNPM=p@G^)>fDRH8eG0l6~l22^YlbtXCO`#y8(6kT1lxaOB29{t# zQ19LS1G`{6JL*e-0j%o0WY38O~ z9I96M4{m7l7W(&}f%H?D$h_Xy1AR9v{JtnIpn<4KH8oLDa%Tq($)e zr>LzTv8@hntbB(~?H6G1z^UloWgKdR%){%iGM&GQJ=uZy<)pe_xES!jhtz!5TPJM_ zw{IqiZVCz+Yp?`bv+d2kWbE2oG)_GjnP`s7tM#!{>6vt~5C8dcp#T=?P61S=rr8~c zH|DpO6N$7y6b0ZIY6Y%E_gfa=-hLC&tA0!H%7J{R@>(d?Y`j$tlV%$PlKy>GAqUr&VlTjpr6QqLo-7=AQ<{%?V%jh>SH z7y>$JNSO?)um?4R-$kw9WvCgl6g50P)kBt|=%+@=J9uvR3<=|;e34(-KEKE1bVRja zS^><^W&25@{I$Gl0s8iyiQacjMx!goBfwfK3XtX~q@i}m4~R|S;pi-5VQBH2fVxiX z>J2R z4s{>W@@9E3T=6lJ9{gnEW(3KB0-6-EV_)HnQZiFAu0vqOA-2}RwC$r<_?8ylQnwR< zk@O*B^I99PPm4r|wL-%E$W-bt=U7gNNlIo^&}Xr&L_9f^;d1oz`C>9!1JnXT@l$MD zG^{y7X?O+KkvekVR!KiLjbRNo}uLyggV)P(0E*93R;;il>C z0>7yWCS6L5FQ%aK!+xh=+*sCvSCiTSQ$z0{WXd7j3xtoU2w2upM91v)!ox~GwvmH& z2n`r$hcR-0Xrol_Q`#sW7Jrv{r?)FzT{W_us`jBlDHqdsoCi+cy(3;610CM`AAs$q;g=bg#} z+b2IA$6p^>EwyBd@+ue4lV?~KI?CR3CvPf$l3&X9NyCtbw@88=7dR>(lr^1$Q0$Do z7PTXuk#h=Ex#S#j(INkwH-Szh&&^mzH{!AzsTwvzXm+Pz3+m1GpLl;;9k{d&@ z={zJu0iDmNrmk8Y8JB+_&uxrH9~+7wDKN#v5K||dH7|}LqTC*gedzysP|AvazR=eg5nT%R3-*XsEtM9|{^r3PXHv4om zwT&!HJVnaS`Wl(J(}5BeGIeiIv$zqV)>u@s_Dj;z&-<1a=^N*wHtxKW{%kI?NeHmM z#^HqNvS_F^K;Jj%r60~88Gie|_UO{_bp%@9iBFexTDv;Dx*}lFbPNHL4H`^-^r`= zlXJ6|5ihYhSK+B)k0ZodDdS+aHTN30V3o62_>9LyMx)z}+p+1JF*3d!p$YqD7H@Cw zW>^U>mBVP`0HqWpf^SyLe?(5L4vGu?;xVhaF`>+-sx}6|eITsMh zTzG}um^hB^g^tiZGyGBaWqiGpc`&pFR({$Qt(*N*svdHlIM)j5@wUuG;ifj*u;J@5 zvWZL{Dw-=m-bw`%*?1UtjL15Z+MLfpiPLAS{@FhV@V^i7tlSp1Tq&qi#wc?3T6gq2@zSDQRxE0tV`$g{^#D`Xd@PF##M+-yg~IJoAECT0D-6rfJw;>JN`{F2fM z`{MfJL{4`*u9!?f<|!&b&fke=8scF51BlDGLpHgTsl7epFcdeX4xQ|a=!C&I6#tN< zU_0+o5H|y*3x?VqBTi1C1`_hSVCBanG4|!xFyg5h7(Z?nHhww<>8F{YR!jQIK4hU9 z4kh$KRQy03OJ(1j_j`Uft3OwLx&sa-_Q5|FjK;Ggrr_D(voUGXo7lAdb!4EIof*h> z=mM#QL-F_HVEkWjD3LxvbI^$Q_vkx0mg+cgvL_D255U3r!J;L4_D6v_KwL1>-uxRz zjGT$RM<*gjLbBMl0=ef^`>u;2Q^BK>y5obD!}0PzCg9np-@pr_XJPTu8HheH45wuC zkW9+^*&pwK?%5{-Ftv8NsIcz+sN;HzzqVZxO0c;=ZYc;@LDm_2J2cJ6%{x#(m^=+MPQg~8!L z&%Tlt31`}2{Ny1R_sW}yP3Or#zG|3|r-E@TyABQ|^hZ?U0K_B=L?&*Rjp}pN)OEpP zKNTF=C;FKzZg|b3xC+RoH#xZY){$B1VsX4a1+Ffq%R-6Ysn? zAJHd9AP3jk{Hc88*+>0O?7C9qFFO7~M4uR}pZGzDjvt8V_yMKa!J|4qUvBPpm8bbP;q%)<>C)(fG)Dx>gzqh0!bwxo7VAJ`__ zu31pT$5;%$`lXXzQro5dABCC>#J;c}%*5n)$-oNSC6A2)K+xkgOfu*+i%wJgRiM;5 zBZ!oRUY_?7;K|^+kn-3rGO>aYnOX1E#e@CzMYqCZ;d9iC7^24G?Ra1|3&xp!1k!}} z@amnOe6PlAvkeoP>id3Q?OdGS*$>0J^s};m{97$8wdP2(!ivqs>5F&z`FVq=B_SfmVVIXRbMv!zvSLts4U$!gfivp~DHT`nH zh?=+xtlnep^DUtIe(jUSL2E5<1&y;kXZ~--r2R8vF5B2lTNmeQ#-sDZMNAiPE?kV! zCJ*X8rKQ=$>8C?8?T-OY(|>2q_5IH8Iv(eF@BK5pXh5Cy-4zF@&3k{QXq$W|`(^r8 z^#AAjH|N9wbhdFN6$Wa_E&#bexwEISY)IVt=hBGi}$ci1M0M_ zs3`D|4F2x@qb?o;W>fs zcXw|7csx)RP`@tEsyShPz<6Jn$Ry zfD7s_sJlY<8w=g}X$lvUVcoVbg}HG-{bKU5tEsyShPz<6Jn$Ryz=Z_$b7|{bo;jDr z)b|Ex>B2hC<((xSXLoK5Ud$E9ZQGp_mj_%PIDZ~+LH##g#a*U7f2MV5=+e;Tf!{L^ zXsHOs@L!mZ=U83$i)(tji?+)HE)QHnJm7-*B{Z3ytF`;x)l^*``0wNa7t~!)ceON^ z2V5Swgm}OO^-E|nUCr#jQ!{hty{z;8TWyq*6Zv_MDb=c814io^zga&YXG9cVOF@o%8zn zKR;$!Pct8H+4OQ{-tu`OQt92$vo-ntNAflN$eiTA-!A?4{p4HM?hSA36`B8o`s(=P z>G>-}R!MKqx^4S9WVqVh-!VBU7m|hxk}qxuAmCQu>g;5E6}H80=V5dN5KscMU_bx? ze*y%~pEWZfz$+Zr00KS*c!l$+&0Nt75V+_s0RVgo5ICRO%oV)=fs6hU0Klg}?1B5| z`>mDfvj9HbnF|5_V#zgtfKP$gU+sKaGZzA)j(KU_?%owSeOhEm4zMQNy_qodPago)lMMg*6?Qd{UWczk^<1;b>EfN^heubM}XtgS`YuEH6 zJKwKg7g4Wn+z=?MfN|g|$shWbF15=tcdkfBhutw54S|pZ_@hZk)nF~97a(w@FEJYo zNr1qGRE?IcrSjSQoty>m%}@Azi!)!;0t7DV^0Rs00tC*tIP*m<3^F8p^#R@TG~;7Un$$MYOL9fz*j4tNnU}b zJ|n=*40WS=d9|B4O%Sjpkn*>}d_$i)mH&N7?%x+te}Pmt z_5H|^hySyHdV4-@2$WSoJ8Fj)XZ}qNTGj1C`@80Y2EWnJJxr=~H zf#GU*zjgxEOP=malKQ=I`lyNeuKK6_OSsF;GByGs2=G^w5URi$q7fi)(Uh8vh9E%T zLZ||3h(>_GMN?`v8iD|U3!w_EAsPV!7fq?zXb1uXE`%zuhG+x`TsxHdl~n`D2W5JD zUx0QXDZ?5GUm2>%9@<8Lz_m@OSZEmp2wWMe$R658fWWm)saR+k1PELis>mMNMu5Pz zO{rLD83YJi8LG%0+D3rDwN0s5Xc+_uTp6ku$sW3Xe(9q!odqC#kzBZJGYkO&7e*ae zMI-_QE|NmC%`gNATo`p=6_E%KxJU}kHp37gaADMeRYW2{;36qB+YCd1z=crf23xRv*ugA}n=`27Pg<%!t7qAe%@*}ZB1Z)WqI9rm8gFp@e0+$1cCJ5LP zAaJ%M83%zJ0t7Ax5={`WC7}JGjYTIO8xz^Hr}iO^MaOg5e|%hIV#4JNj2)YR_rP7d zCUW#>Y|QKzfhhrgrQ}LLz@vbdSGdkjk)a`xJ9j+p%<@!~O0xl<{Vn;3bUq`X857Sx z5a^hkl*`GZ#SebM9Rv_?B`_w#)$V?N$8_b(xCo>O5V#Z+euRK40RrbrmT?hC5g>3W zDEtTkR{{jil`P{TkRm|fQc(C20!l!{n zQv`|%5V)d(^hZELfWT>B(G-EA0tBw8ApH^05Fl_GSTseTr~rX0DoB3>Gz18o1{O^b zC@MhUiVD&n0Sy5Hr-4ON1ey!%e{22k`OX3mzUG>=K){*+fwM-*KnOG!AaKo%Xn}w= z0Rm@@l7SFtE6KfF}V0=Lwo=5KsaHj_Uvcj{*eFBQ{eZK;XCr z5b!8K;5=e86#@i~YXAX{0tC(@Hd7%$;NrRl{_OkZL(T#OQggx=NFi8890CL`jyki; zPy~jn-TkC4lxnb!Ca0Rq?J0x*4C0t7Cudb8UW z3lO*#7l7&G5+HCv)%%HW_I$uufS^j^a503>AudBB&?rFQ8bx@FfI|TS=Ma~n5oi=3 zaE&57M!=x}fpdt<&&M1a7VsL=-jLjeM32uC*rj0A?O-TkD_h>lJOmtkTZN{ zgVPHE1nLC{T)hX65O69$;GFU@I0E$o1g_qLM+i6-AaG83861In0RmU=!6O8m3J^G_ zybO*&y#Rr$_uvr%P6Y^@4)56$-yPyCfQ}e#GXw}<1`balU|WE|*%oCy1Tq8&Tm}wL zAz)j8z}XgMJOnZX2wVmZPa$AifWX-nWjq8j1PELP4o@LqTY$jX7G*pHG6V=*1`bc9 z3(WfU`9aPCq}%BHl3nTC_!=pa6j@2uODXbOZ>TjuveZ zC@4VS3Ifs{0UZGXr=vw%1PTfexPpLmM?gn_!0Bkw7J-_;lgGa7FLV}w@YOK6hk$bd z0_U8V2@t3W5V)EJ_YiO{K;WDcGXVlMfsO+!-u;`@)j+t1fO7!?=bV@c5U2?dxS9p` z5O6L);G7dP0RlAv0#~!(9s0X1zTi(si)6XWcgEa!i0gL4i_*ub>6p5pXUr lJDK5%^I4bx0R)u5m8Zu0-aPQ?YcHq=y)SO+Ilg{p^*A_nj8QCP;hd@d+aS`FEkm* zUVDhIxdQ;wBqzKbDGE6M$Te&Pk8DkpN|_5yt0vJ2nfTA|JsdB|YS~HL%uLPQJPRGb zxxnXZfW;p|K2TYOOSGtE+pWB7?u=B$c#GW4EU=FIOv1{BCD%pu{Vr(3#dtBV>{H`ugU@>#@j# zum13g=~*WR;$V>RD>9`%kVrV&G5PY3a&s?vfnAc~Rca;@kJN;CMjmyRbw8!7v?J?I zoX(Bl#lCzPsq%rBcD`nKcomvrLnwC0`*irJt8M?swsIsAPH?Q%rG4+xx!>>xEznhL)Byns0@(l?#UH zYr9W3llqsYL>ZkmM(6@n>^|}=!mDvp&5QV2_*ge6N;AyoB!eMu2&1dQatIpT-ZLu>t2vXLkUwfUd<{e@)M?)Dlgo$Zp_ql;A9cSkNs?rm%x*0`95mX%(?|~6l z;m?GMOxV3Z)QGXm@HBZ#$Zy_tgUW4eZq`aTN0PgWR`srxJzDiwF=+x{`-5sOY(Nnau=j3*v_c%dS;i8cHis;y@fvrXB(3LmS(!ZfwT2I)mC zN5#r$CaORzjx=RJns$FeY&ND1J~3KF_fJCo$G@nnt0x|?);rElcL){aNmFtfAmdg2 zhrbqvl#pBJMyhP3WcD+CQ!y0zwDY)22Zx|wwRbz%*EiK+ty6pnkbhcy9%dGv9hz`9mA7)+z3y4#^8Gfd2fT+vW8~ zW%;ZaRQ{;%n9w3YwNrkKriyh9SRM+A!z+2m zc%SQf8O9%?bN4r-|1wq*Nq!IsgF379@Ive<3X8#vA{_0@$@E6+Ae7kU{&vn+eSs=0wz zGzQvwc5!F_Q@aM43Y|d=u&P}MZi*x@;_+ROp8c&Sbth(RKu4$+d>HvO5b;>>ZsuYM z3aD(XL4@i*Vcl^P2ZX+_PiD#TVfpNP?xzU4jLK;8tb+hdg!VSK>;8#WG0VL4VnLe< z%4dJ4`l+}n%4HYl^lk2;dz&N5P2`@*Nb@H9i??L>tnX9{imEh;1Hu&fzq|=13L=a( zivN$szN6?4k#BborYLK<#|V_Y8vm`^Fd=o7Z?%403tQql$&5oyo3U52xuaf|Kz-b^ zP*!WQ78SHG7Pl0#X;jS}5u~B#J9JiG4)^dnf@7YeLjstWv*>SMHN+GDULXkq577sm zR;%Fc!7+N`&|5k?#-lmG81;c;Vlj$TBN=FH)Bq*R($#FcDHWnpLAkQ}BaIA}DE8lvYG(7jz4S z+6IG-M*m1C6_r9rs$w8fs%$ocYZVXzU3zG*FU`Y{GRS<-6GO6Fu(uO>i3_kpKTK-RIj(Lnf!G1Ytqg0 zulSir?_c$&>)!A6o+vU?2KwhNysb-yhx!J)4jhozs{@a!epnz-3W1UFRZms=V@v5V z{e*xLI1CIBD3Ji-msoZB%#4o%WfEY01&^- zx)oUYX90ZTq&=5Gkd{BKCnA9OiNMorS^|ilmOrg0B7pdbz|(A6 z0*IfMKdmPsfcS~P(`;G-h@X}}ttTRY_=&*NY+3?{pO!zZCnA9OiNMorS^|ilmVayO z2fqK8SL{Cv(Apy->kI-Tg(A(c1Q0(gPofzifcQoVMVes=Abwb$L^DDF@r@LUG{X`= z{IEQUW`qFZ8z~fNh9!XbVR;hG2m!=5QYg|4O91i1@+6uO0%KPEU#z;hDuMfs03)>^ z%|ryo>>xWbDyrawmC8)^7h-!{iCft@PNqv{q>_h`bgxVhunKFzbx{_ z7xn#Yl|!H{@z<{xS+}kZ<&HZ>G&=J?`>e?8)psmb-?Vth<+IO3 zo_R*(jW@o1+`M^ipU%=>eI@e33nH&n|6b#hPh7Z7n?%k%*R6l}p~#a@)~_VbKQFRt zmxvyx=QkG3XWKTH-@bi~cSX9ZZv;H;L zh|HNIqPGucoh5S9O>ST7s~>)got~?FL9+pU5q@h;((iqb5%lIkEb}QXLeNCW%a+ zUj1QmrpQY#iJX4AJLc%4MP7W-#lN8X4^5XX6S@9+kp&Ax1_woS|J=E*jYivgrPAA; zbIuXjvZXoT5WhjF%-?N`zj33;_U%nbjY06>gCfTt?|yoFMOLqNGB%HNYbxKOMIu*S zCGzE$BK`d$ix-O=bBx=sv#-j$VMFyDrAN8heaaLO{fwZq{_NRqhSuAk`|lSy?KF4( z<(IqjKL1=qZ(mM6*~M$T-hH>oV~>d(d8CM56^4e~9vxiF_zgr^+T%0Q@Ovn=svxg=yKd~BICdAu^xZ0Jl&DJ zj&%anJnOfp%x}Iaa^{&Lr<~#>ZQQ=JM%Ec#KcMRUxqgsUAx}7=^#~`XzVqID?h2y9 z>VVR}AkCcVj@7}TR~7wWsvo*_hMzdm?K@bzr=BYE#1kTW_K2)m;|7Y}_g{Ena}c<* zc`b=RTjEdIe*V4*jb{O>+mCO~tU3ehEIxm}yCqq=)ZJ1XTYaax%Gi*0>Qs>aM@+Mhjf%_4W* z<&M=WM(b>T(n;=p-LHdS$r5*kIO7a=&%bJwi}Syryp%^^c&Kl%tC|jXS6#21Wr093 z1m17!5>N~dI$8_?#4o1QbhMQK;7O{F$565m{QZxRsx9M zN`v)c2q1njrKY2;1Q5TK2J4XsZ2JA5s^?sC{eJ-%1d+;4*t`iKe%|#VyGR5OKN48N z=1lqB;t2q1nWu!PN<0OIFe zAF_)?0P!P%jTm;^ZwKb(`z%1jj>ihkAc#elxLFfG{H)7Ea?ek`)Y&6)t>XI&nW zi$wtOW056p)&vkg>++CXECPrhi!5=oCV==^mxttH5kUM{WQm(K0mRR`JR}#3K=I=L zWZ7$f=UISQdfA9u{2;JVCbA4o0P#Z;C7uZah;O1yBpI3j;)f6GBg3i z4^5PKCI}$Di87I7Xaa~Inkey15I}qrWg^MY1Q0(oQR0~(5LWz+vp1~bSpXA-C&?y( zu!Eo(mo*6FO<;JaZxH+Qt`XTqB7pdjz!ElZ0*Ie?eaJ2n0mP34mausfK>WPxLw1n} zAbupUgw2}(;^$o-vWr9j@gspHY~BPAKkxb!mfgzz>;BgHX8{-lg=t229RbA0gdzzb zevxIT(}<4)MG`>#BFj#v5g!MNB!KuumYq%`J`NN~0P%|~JDo;+94L|i;*Z_3|LCa(!J?6}KLNz|XGjEt1Q6d~(MZ{!0OI>IB!WQ# zh;OiHr0h=s@%@Ws_v4W9q z7y^hNh9gmo5kP!n1tZ-s1Q0(AN1_-bfcVA=M!I1LAbuE*L@`DH@r@OXbi)up{4gAe zVvGRd8!H&;h9Q9XVK@@S7=bk6|M;g%cJVBLF;&KHx@iW%*yTyjj1WM4BZVT(zyyYe z`UbH-FjT_XAb|Kb>O_`-2_Sx8poFtQ0P$_qi7W#XK>WZ!31@=<;@hYbSq3J6_lN+E#wrBs@J)(9Ye4F?;g5J3D=DosCY1Q5T5 zgN;%MAbu&8rk^zeh+o6OMkxdkzm!VT&l&;5ui;>$6at7}N~P&%jR4};a1^=Gb7}9p z;hqIBh>$^GuxO<0PXO`#84|%D0mL_0G*b2_fcX9liC~Zb;u|a)Df<&Ze1C>SFh~IL z4Hk`*{RtqxKSLrIB!Kt^i$==+1Q6e!ArTA`K>WZ(ThYCDdC|`T1m@X^a14S@P^OLS z2q1oTB_W|s5J3D+P^OLS2q1oTB_W|s5J3D+P^OLS2q1oTB_W|s5J3D+P^OLS2q1oT zB_W|s5J3D+P^OLS2q1oTB_W|s5Xf8noxfY#&9eZV@Sx~6@*V_5mxj*AB!Kua=@L6z z0*Ie&X-F(8f#IRPLF|u;nBch*K>S=QLtaq{AbwQ51kaTK;^$f!@`_3T@uT7;c&-Ex zKiA5TS5yLs9~Cdb(-Qc{f}j6$^k)GW1Zk^8>xl>;ej@NRo0b6Lr{z!Ui3lKmBJebu zmH^_Xxl>;ej@NRo0b6Lr{!;{ z_4R}A&l&w$082gkI#&jP!J?6}KLNz|XGjEt1Q6d~(MZ{!0OI>IB!WQ#h;OiHr0h=s z@%I0TS`_ zX_i6YLyvRK5bIlS!e6yt^aUTMR??aDs z%@RO-v!x?(9|DN)LyvRK5-PvQ{x{|Joyd&88~|JuC&k9zvRyo>wS{$SD2e*u_Fch~>` literal 13763 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

e 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 Bs0082 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194032480.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194032480.png index 5d649492978121a484c2a7a55d4548384c919149..5c0a336a56d0e5a186bd235cd25f9f5e5e7e644f 100644 GIT binary patch literal 203635 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 O!#5i-?3zu+O!$9MPWLtd literal 31623 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 S_v&nW??1cy{rBDb$bSJVP?S~x literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194192436.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_0000001194192436.png index e3b4b42aecaef72ed4a08b3566a895b3f9b12343..27556ea43f7c2ecc65b9425e243ea593f02b08ec 100644 GIT binary patch literal 141333 zcmeI2O^6&t6o9MO7-BS$;31eFi9${u0Qf#U{pvBf*>oRsIZsCAd+Jc zFCG*`(1Ump@#4vgE(Q}3FJ8Rm2MJMd12H>R&rG+K#tv1X>eZXBZ)A3=x?jKd>U*E$ z((gTa@X;-scWgGsY*{?8@Ra@i$bNs@w9)=u+xPhg_UD$R1BYKTX6twLw|f8Htvij` zV-^?oA9}Mg^DC>%)iD*_^k$Q+ao89a7nR>!Zn?(P;8eeXYJSXMeBQd-Z>l&*c7k-I2XiU;Xb}nSbo==D9g@b$w*6 z)_srj*fWjuPGYBt>`$Gm`AnFNclMcUKXolzrMX-e?EOrGn%MDgvuPf3V*W2zH+=k9 zbFuEDS=$@!+R53J>HBRSAG4|csO;I!+Su)V@mz;MLIUTU|Me1GE%r5 zK0p~&aHR=P0tn~{im)^U5HJl_vU(CgKu=JFr6GWTX}FTrlK=vGf+8#p0R&9Lm8_lw z5YQ78VQB~;U>dGu^(26Ro}dUzLjVEOa3!lJ0R;2}MOYdFaRl7^?#gGp3y@|)C1sso zSzV4}WJ%OGYg7UV7!@bULJ1&XC^6!r5t00BdZ5g(NR0!GD2vQPpD7)p%z zs00u&Do&Dx5tfNC@{XD!0* zp%^b*Fy{RE(5H0AZ`)?fjvcyt99VbfZdky9f#5iK2%O`e<2>N0IwgRBsF0Na0%pZe zaRkJHtOO7+D}IV2AP!_DfPh)?Qyc+tAS(d`%!;4l2#5n&2_Rrr{NBa)JaBY(igy9L z8;}S@MhVK)=p}%Fy=b^0K>z_IC{v@C00Q=+;f4eO1eBmmja~u>*o%f65(E%Xf-*IF z2_RrE8g57sKtKt~)aWIEfW2tAAwd8EB`8y)mjD9xqTz-F0R-%&{PLNvKOOwL0KKQr zaRV81P^V@~00CPREOHP)z#P=6*%Cm&76pqO1Q0L>b!xT*5U@qTA_oBk%t4)+Edc~< zQLxBC00DDQr)En40b3L-au7hk9Mq}V5;q>0lP%lixNOUQQQ>k5xXAfQWwwKxF;6h}@$ zmjD8~G+2uhKtOTi6m$t7pi5);>r$L$pz6fPsA?SLHG_cV&0N)q5m41Q%4-Gz z%bU5X6C0KBNFLhR`B5IspWXj+BHU1Q0NU7O~L@AYgQ)Bn%;d zfFZPqjZOdoqa!6@2mu5Pp+#(T0tgr#DG5UeAYceBVxtp4!01Rx7(xI6Lue5jod5zx zM@qsF0>cz=?TMd0=3Rgg4^+esQ$`hNX~Ks90{T!QCLMwKmDOb|OvjhZ9t0530}>(W z2q0iOwq*7ofPfy52uVi(0n@Q1vj+hL^ngT2IsyoojxCuz2q2&bBtp^=K)`ft$?QP@ z0X-lQl8!(O0l$6Y%XfGeAl;0L$s9w*VqkI5_yiCzK2tIV5J12HScJwWfPnFtk}-e) z0tUb$G(G_YjL(#e0R#{*02ZO~2_Rs6req8tfPew82#rqw0pl|zV*mjJ41h&wd;$m< zpJ@phf4=?oJEOk~fQ%)mqxg&nsCYOfw1$8sOj+?65m51PN@xuMOPI3aGa{hk;grxC z0+ujk#b-o7#ltC~H3TeS%8Jj3fQpAxLTdVt{T-bj|90UdP6VN1M rej0QjPGEzrc+q|lQ5-!5Yxj=rdis-##}5Bk(^!1u;KCOVzqs-*Q_!Yv literal 861 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 x961eR0tgt>;9Q)*T-R}V#iK7z{sW{Ncs2k4 literal 2832 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 literal 550 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 literal 1737 zcmeAS@N?(olHy`uVBq!ia0vp^pMkiBgAGXT5oj}FU|^fz>Eakt!T9!8ex7uy!10gi zXFUbNSIp|DKF~TrU?KYg-bZ3fSywj7Eqdh2@}AS^Sc{X*=e%6+md7k#ycZu5<6KB6qpz`0GZn+7KhA9ia-@5(QKK_2!l%TvNQ(k`$ z|NlN(ugZbVZDQlS*K?ZV zH3xYT7}!rT%xIQT5zew*xak|ynS?YWh)Bw{%p?1*`>Xsv>{ER0>_YJ`Ni~u$PVMy3 z7u$bU?*44`f;p0s5$OzPs(%(M*MDYzDfM#O-hhNS*4%UF=P=*n*md;#yXw3D{r7xp zUaA&BLHWAIst-R8u9T6PcPf4Uyr!A6Z-z-`9J6`(Z(4Wu z#GM7aH<>5SJd>(sU-La}b#sc)^Vvscr{C+@IeX5@FJ3<+_AsB0KKkAN;2z1Seg8i6 zu9htR`NT)>ppC`TtHtL(8XGi!KU`t{n<!rr9>%Y+RbhX%O8scca)Dt4zMogmWC1Hl-U_ zZ@8k%nC88~_*zq>`q_nCXCxh?zVU#~Kaj&&b}Y)^^%BdFMoVRn)AJ6#IS{m+Wrps- za}nHWb4}W{4ANOLZyL{#jd(SUVYBKD$?St`CO->ceb%F(Tg|qa+54_g!ZsG`WZfC1 zmtBA@?2$!^typqRULH!&_P|8MvDtJiO&-3{=Wwm$YKTfa7fmwF<8e1R# zTy*@ne|`2pVOEY?0xmDZKj&{g_@}V@S$M-t>4?nzij6mQ@*DCQ(hRB-^q$VG`MUMQ z#fc}(?-%i2YgSis_jlR%=TT3Bc9ZPWi#t>0&raT1@;&GjFQc?cLT&$hvGD7hd*!xV zf7`!V_kd0O?Y>IEO?ElOnoIwm+4@`V3*+wE`mZY1Dvb_h}0huQXGZVgcPF-pa^y6eph{$Fi`EQZ+OpL}eW}b00VtA&&e)7mF z|1~;$kwj*u{@QT_(7D`Rdu_hM0iHCq;t4zr zmM0vIHog+p_RdEVNt>GhG;qy#ElA(A)b4t=x^{{F8kVMWH)!s<| z%gKT$0#$@p+il$Rg$*H+GVSGIyVw2-NC7f4f(Ah}xv_ZX3}C_jt_4)qZ%lJoQj-64 z&+$7`rQcmhe0Ra7D6Mi!-22aQUf=uwRO%;C;D=Fx(x=bsmDJa}=A|pS krs&mNV6-y$$M=Vw|Al6ERN^#iU=_vS>FVdQ&MBb@0D|lvSpWb4 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777778.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777778.png new file mode 100644 index 0000000000000000000000000000000000000000..19e99b9ef490fff79e64e33192c97c1a39c6edf9 GIT binary patch literal 162562 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 Y|8iRQL;C&?U54&GY|wuP{_$`B2Z=@2ApigX literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777779.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777779.png new file mode 100644 index 0000000000000000000000000000000000000000..4558b332925757d97d70ee57182c260804629346 GIT binary patch literal 190640 zcmeI5PiS356o+3VYK{wpdfqELe1qPh^Jo6=fQu!2Rc#(7j1m&_yc?#$dd=gb#~<=)&mbI$ks zZip};d+%Aeb8_PHiC(WaIlpao(f#|e`}}jmdG5bgef0Nn_s<2pw(WSL*PHr$@Hw{s zx~VIAy{mikvoqUwkM&lTru$>7tG(~sgB#r^9}uX8z%S!&(kb_OaV--wCj=aUzs>;z z1ZpHO_>M2@<9^r9X8|p};hwoU;5ifYyVweEp8xEJzh7&;i;cWPdVFHM6INbcBE#C3YlmDLu$iG{z z9e4?Hk)^I^0*Eg<9-7NV0P%B?rLJfKh%Y)Gn#)B1@pF--u4n>?FFGEY%S8b3bCIR4 zXaa-Z#`@89cvdm-kJ_&d(^pP9ggNPqWOZ{{FsG~kY253V7@!L?#vu63y>u=J3 z79bCstW|jlvf`z5uAYF|mq2|o z43L!o;%CK6aj66lUurV+m6ZVEXT?i#sRZJGGi&hY=r$xA?~JQ;I-uU5^OXDYEg%58 zok!w-7dJJF!LK8J7*KTZS0D$!mdFPLMkjER?{lL=V}$_%h;JZ7Mi`v{;*ZXZ6$S_( zzJU-KVRQmv;@|e|s~b5BFgjgU=peANG~Ew-6Lic&mkfcTcuWR_q8@dxySw+ejl zVfS3fpHA5vSdYg95ZLnG+%s~|0?0e8FCa2nFi(KP`sO2MKraD)-uGhRrgZ{{Z#`k= z^AbROFBWcECxH0Y6J|ay0mS!W;ih#0h;Kb%=JOIjd@mMmS|@<`))QtvF9F2&ViA4w zvFG@IxgaG1K5;S8r2_Sxx2UnF4K>SLAX3Qo5#BcK8 zsuBW-UrEr6*(8AYO&(lTLLja9hi>`c0A~RzQOC}hX+zV(Ee&r1ODy;!(uodDunPnh|<1Q6egg`3t1Ainj4na@iA@x55MX`KM# zTTfWke6RfT<`>hx6B?--@B7pd*NK!`?0mN4o7tN+3fcU9MQb!d5#8(v;&88xN z_^C)zM->6YR}~k{rXqm&sYp^s6#>Lo6&KB>B7pd*NK!`?0mN4o*GSFYcjVWHx<3mr zQj0Pk<|UAk16_1X0P#Bp&UP{gAij(o=%Ql+h~F`Awv#~s@nz&d7abEo{EmUMoeTnq zFCz!K=$HWFcMP2EWDr1n89C5J#{>|+W8iEjg8&S^N6B9uE#6T&hg8<^|$cZi!6F~gLKq;q#0OIS&i7pcpK>Wl&DW`(~ z;_JwXE*k`{eD<2x(wzn1C1}9qq80*(UrW-=*&u-U4IEt5LICk=Nt!tu1Q5T0gNs@S zAbu@LGiQSU;x}+`Q40aYuO(^bY!E>F1`aN2A%OU`B+Z-+0*K$hQRT(t;?%KpX8{x< zT=yR8U9&@fC(f%kcydKb|2K6cRvug`v@MJORXyXGjHw1Q1_gXtW$p z0P*7)Qb8dB#8(&^Eyoi;{CI{`P)Gpr6NmQF#OZxip9M(Fvx{=P1YJ;O4{-z#UtA=?}9RWh$Ddb;v%7;E(jog7nIpU909}^7YPk@K>+c)pv)fP2q3<=NNA`F0*K!Q zW%dw90P)2|LPK2;kS+f47ndhE3($oJRqrADC8#_%ZZYtCj%btBsDvV+bIA3_aGWC4l&9qoeT{0*D_&kF{zEAimn@Xgr1h;>XZq zty%(zuQoawk0D?~{H?o}k8u_t#)GQY+IR`7j*#Ko5J3Dk)L5gQ0OG5UkOA5dK>Rk; zSfif6*bO_rejWSO=g0tU2q1nNYOGOD0P)pF$N+5!AbuNatWi$@@zqDj0Br~$ej946 zQBR;L{^qytzJ#*?>O*CK(FinOg3;FUGz8QVKzy~)(Rd62#E+rJTD1faUu|?W9zy`} zW9YF~Edj(=8y$_u5J3DGdaPAT0P)pEN8>RB5I=?=rbY&0~MlK|r9q)TnF1Q1_rG-n&z^YrqWUhn*c`PrH6!dq3_9xs8~=x98K oz_?p{%6*<2Q-rk;P)6X?@8eqzFCN^wZ_xMr+`{bg?GG;f3n90XJOBUy literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777780.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777780.png new file mode 100644 index 0000000000000000000000000000000000000000..9b35e8e0fc4bb514584813b79e8889cfe65649a7 GIT binary patch literal 213644 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 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777781.png b/zh-cn/application-dev/reference/arkui-ts/figures/zh-cn_image_000000127777781.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0a95f73b1aec44e6bccd6750a1c9f2815178ee GIT binary patch literal 210629 zcmeI*PpD>f83*ul%d~f5gp?d|KwPv+3EYL)!trKagdxLCU=|9kghGRK7T4||LvCDU ziKXJkb}ecpF`JAD`U7fdA+%5sD&%g2s|Iy_??PtYBj?`3dC&R%dCup;b>_V1&+mCY z&-u=s#SiE4ub=+f@nhE>YntZx)*YMQSpNFo<@c+fzI^%L`>+1zcbC5`zJJFzA8MK_ ze}C}3@#GCxo@|=yo2|`T?|yirS?ug>Z|v_kuP-mWYWeMp0D+hSyO%BdItclRnEmOB z0D%L6PhcQGAijX0$Dgqd3HXWb9Uw3V0YA~_Fl9Z?UO>=i{|W$@gMgsVVaj@(y+CzA z|MBN9KmE~OfZ0zE0D%Dly+i-N^5LHh^u03x%Pj*>Dj?{G@;FH#hJc{QnB!z!Y<=oaU$z%uGTtl?7Wypg7A25YK+w~ATa7># z0YT5gZczeh1q3~=q@ERzT3xdRvV^76C!e!fsIlX$1s5t+&+@34G?6 zpa0KZfDY`%&fd12nc#DlTv4Nfj?jP$BRk!0tkKdS4n>amI8wAH6Snp0YRU^khMra(7gi$W*{Kw zGZ?ZK2?)A(fWQm{1bqfW)*=Bx_YM%4fxv`8e{t)l?8SoC1QLQ{UPI5(x-;BIxOtdG*n+ zJZUe$^v(fRSnTX=OMZYsYJtE}0)l>&kn;or2nc$BA!>oZQ38T~l#ufT0tg6tfFWvu zz)=E%ew2{&1Of;MdVnEnfxuA$f_{{c^V13Z@chrt*$Xh8Z^x5`z5~X`1R@CtdZcOU zg+PaZpm)Idm_Q@}L60;|y%6XS5cCch9}|cqAn1{%sTTqr0)pNF<6{Dm1Oz?OH1(23 zVDsb^PglGbK`rh8UaC1<7^cISp@_=E5F4Fq!AGGG|pBbkX1m? zv+`STJze=q@ERzT3x zdRvV^76C!e!fsIlX$1s5t+&+(WDyYbEbJB~kXAs@(|TKtKo$W(&%$m|0%-*VJ*~IZ z(h59weE*!i04;N&Z-F=@5K%zTBTiLM1X==u-U4w*AfkYvN1Upj2($zQy#?ZsKtusS zk2qC55oierdJDuMfrtWv9&xIAs$JmQ&!70^WP1UGzV_Ec{RH|5EOz#`rM-`oYY0>> zAn273Q27M<2nc!~CD#zBTtLt(AE5FH^brvBK1!}3P`QAhS3W@H6X+u#=zWx2L!fej z>4W~#f3ACZvb_M6>noo?27&2ApP?yB5+JZDAn2E)90)n0h+A;)k3J7{meQOg)Bp~RC zpe;inr+}d6)VDT)L;`}I2--3Pata7~PJL@%6nNwdPrP9-z(tP8Vm%so4K_7tT76P>i2zqT3Q!jx50)jpO%`F6K z6A<*;CZ=8j0|W$p0Ge9})FvS4wM|UD1O^BQ`T#Vy5U5Sy(xAWf>p#3w<6eN;%+*UE ztH7n9&svDZ2@sf0K+vbN^<)CY2nc#HqfiKe=>!CQI$KXBP>g_}7c&Zl5SUIt(5JKY zWCFzq2zoK2PzZtP1R@0e!aZm1u@_*vcf^x}2}B5eu#sqo!1w}!KEA0Z5-3hU(2E<1 zf(VQ+An4NK0 z9z>vA0YNW!HYy`9nt-5>M(IHW$`ugwa%WRuWe>i;xT **说明:** > > 从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -使用RenderingContext在Canvas组件上进行绘制,绘制对象可以是矩形、文本、图片等。 - ## 接口 @@ -721,8 +721,8 @@ strokeRect(x: number, y: number, w: number, h: number): void @Entry @Component struct StrokeRect { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { @@ -765,8 +765,8 @@ clearRect(x: number, y: number, w: number, h: number): void @Entry @Component struct ClearRect { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { @@ -776,8 +776,8 @@ clearRect(x: number, y: number, w: number, h: number): void .backgroundColor('#ffffff') .onReady(() =>{ this.context.fillStyle = 'rgb(0,0,255)' - this.context.fillRect(0,0,500,500) - this.context.clearRect(20,20,150,100) + this.context.fillRect(20,20,200,200) + this.context.clearRect(30,30,150,100) }) } .width('100%') @@ -808,8 +808,8 @@ fillText(text: string, x: number, y: number, maxWidth?: number): void @Entry @Component struct FillText { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { @@ -853,8 +853,8 @@ strokeText(text: string, x: number, y: number, maxWidth?:number): void @Entry @Component struct StrokeText { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { @@ -922,8 +922,8 @@ measureText(text: string): TextMetrics @Entry @Component struct MeasureText { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { @@ -977,6 +977,8 @@ stroke(path?: Path2D): void .onReady(() =>{ this.context.moveTo(25, 25) this.context.lineTo(25, 105) + this.context.lineTo(75, 105) + this.context.lineTo(75, 25) this.context.strokeStyle = 'rgb(0,0,255)' this.context.stroke() }) @@ -1439,7 +1441,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number .backgroundColor('#ffff00') .onReady(() =>{ this.context.beginPath() - this.context.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI) + this.context.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI * 2) this.context.stroke() }) } @@ -1620,11 +1622,11 @@ clip(fillRule?: CanvasFillRule): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.context.rect(0, 0, 200, 200) + this.context.rect(0, 0, 100, 200) this.context.stroke() this.context.clip() this.context.fillStyle = "rgb(255,0,0)" - this.context.fillRect(0, 0, 150, 150) + this.context.fillRect(0, 0, 200, 200) }) } .width('100%') @@ -1638,7 +1640,7 @@ clip(fillRule?: CanvasFillRule): void clip(path: Path2D, fillRule?: CanvasFillRule): void -对封闭路径进行填充。该接口为空接口。 +设置当前路径为剪切路径 **参数:** @@ -1648,6 +1650,38 @@ clip(path: Path2D, fillRule?: CanvasFillRule): void | fillRule | CanvasFillRule | 否 | "nonzero" | 指定要剪切对象的规则。
可选参数为:"nonzero", "evenodd"。 | +**示例:** + + ```ts + // xxx.ets +@Entry +@Component +struct Clip { + 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('#ffff00') + .onReady(() =>{ + let region = new Path2D(); + region.rect(80,10,20,130); + region.rect(40,50,100,50); + this.context.clip(region,"evenodd") + this.context.fillStyle = "rgb(255,0,0)" + this.context.fillRect(0, 0, this.context.width, this.context.height) + }) + } + .width('100%') + .height('100%') + } +} + ``` + + ![zh-cn_image_000000127777779](figures/zh-cn_image_000000127777779.png) + ### filter @@ -1755,9 +1789,10 @@ scale(x: number, y: number): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.context.strokeRect(10, 10, 25, 25) + this.context.lineWidth = 3 + this.context.strokeRect(30, 30, 50, 50) this.context.scale(2, 2) // Scale to 200% - this.context.strokeRect(10, 10, 25, 25) + this.context.strokeRect(30, 30, 50, 50) }) } .width('100%') @@ -1987,7 +2022,7 @@ drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sw: number, sh: createImageData(sw: number, sh: number): ImageData -创建新的ImageData 对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。 +创建新的ImageData 对象,请参考[ImageData](ts-components-canvas-imagedata.md)。 **参数:** @@ -1997,23 +2032,21 @@ createImageData(sw: number, sh: number): ImageData | sh | number | 是 | 0 | ImageData的高度。 | -### createImageData - createImageData(imageData: ImageData): ImageData -创建新的ImageData 对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。 +创建新的ImageData 对象,请参考[ImageData](ts-components-canvas-imagedata.md)。 **参数:** | 参数 | 类型 | 必填 | 默认 | 描述 | | --------- | ---------------------------------------- | ---- | ---- | ----------------- | -| imagedata | [ImageData](ts-components-canvas-imagebitmap.md) | 是 | null | 复制现有的ImageData对象。 | +| imagedata | [ImageData](ts-components-canvas-imagedata.md) | 是 | null | 复制现有的ImageData对象。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | -------------- | -| [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象。 | +| [ImageData](ts-components-canvas-imagedata.md) | 新的ImageData对象。 | ### getPixelMap @@ -2041,7 +2074,7 @@ getPixelMap(sx: number, sy: number, sw: number, sh: number): PixelMap getImageData(sx: number, sy: number, sw: number, sh: number): ImageData -以当前canvas指定区域内的像素创建[ImageData](ts-components-canvas-imagebitmap.md)对象。 +以当前canvas指定区域内的像素创建[ImageData](ts-components-canvas-imagedata.md)对象。 **参数:** @@ -2056,7 +2089,39 @@ getImageData(sx: number, sy: number, sw: number, sh: number): ImageData | 类型 | 说明 | | ---------------------------------------- | -------------- | -| [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象。 | +| [ImageData](ts-components-canvas-imagedata.md) | 新的ImageData对象。 | + + +**示例:** + + ```ts + // xxx.ets +@Entry +@Component +struct GetImageData { + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); + private img:ImageBitmap = new ImageBitmap("/common/images/1234.png") + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + this.context.drawImage(this.img,0,0,130,130); + var imagedata = this.context.getImageData(50,50,130,130); + this.context.putImageData(imagedata,150,150); + }) + } + .width('100%') + .height('100%') + } +} + ``` + + ![zh-cn_image_000000127777780](figures/zh-cn_image_000000127777780.png) ### putImageData @@ -2065,13 +2130,13 @@ putImageData(imageData: ImageData, dx: number, dy: number): void putImageData(imageData: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void -使用[ImageData](ts-components-canvas-imagebitmap.md)数据填充新的矩形区域。 +使用[ImageData](ts-components-canvas-imagedata.md)数据填充新的矩形区域。 **参数:** | 参数 | 类型 | 必填 | 默认值 | 描述 | | ----------- | ---------------------------------------- | ---- | ------------ | ----------------------------- | -| imagedata | [ImageData](ts-components-canvas-imagebitmap.md) | 是 | null | 包含像素值的ImageData对象。 | +| imagedata | [ImageData](ts-components-canvas-imagedata.md) | 是 | null | 包含像素值的ImageData对象。 | | dx | number | 是 | 0 | 填充区域在x轴方向的偏移量。 | | dy | number | 是 | 0 | 填充区域在y轴方向的偏移量。 | | dirtyX | number | 否 | 0 | 源图像数据矩形裁切范围左上角距离源图像左上角的x轴偏移量。 | @@ -2146,6 +2211,7 @@ setLineDash(segments: number[]): void .onReady(() =>{ this.context.arc(100, 75, 50, 0, 6.28) this.context.setLineDash([10,20]) + this.context.stroke() }) } .width('100%') @@ -2169,24 +2235,34 @@ getLineDash(): number[] | -------- | ------------------------ | | number[] | 返回数组,该数组用来描述线段如何交替和间距长度。 | + **示例:** ```ts // xxx.ets - @Entry - @Component - struct GetLineDash { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) - - build() { - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { +@Entry +@Component +struct CanvasGetLineDash { + @State message: string = 'Hello World' + private settings: RenderingContextSettings = new RenderingContextSettings(true) + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + .onClick(()=>{ + console.error('before getlinedash clicked') + let res = this.context.getLineDash() + console.error(JSON.stringify(res)) + }) Canvas(this.context) .width('100%') .height('100%') .backgroundColor('#ffff00') - .onReady(() =>{ - var grad = this.context.createLinearGradient(50,0, 300,100) + .onReady(() => { this.context.arc(100, 75, 50, 0, 6.28) this.context.setLineDash([10,20]) this.context.stroke(); @@ -2194,10 +2270,13 @@ getLineDash(): number[] }) } .width('100%') - .height('100%') } + .height('100%') } +} ``` +![zh-cn_image_000000127777778](figures/zh-cn_image_000000127777778.png) + ### imageSmoothingQuality @@ -2224,7 +2303,7 @@ transferFromImageBitmap(bitmap: ImageBitmap): void | 参数 | 类型 | 描述 | | ------ | ---------------------------------------- | ------------------ | -| bitmap | [ImageData](ts-components-canvas-imagebitmap.md) | 待显示的ImageBitmap对象。 | +| bitmap | [ImageBitmap](ts-components-canvas-imagebitmap.md) | 待显示的ImageBitmap对象。 | **示例:** @@ -2232,7 +2311,7 @@ transferFromImageBitmap(bitmap: ImageBitmap): void // xxx.ets @Entry @Component - struct PutImageData { + struct TransferFromImageBitmap { private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) @@ -2261,7 +2340,8 @@ transferFromImageBitmap(bitmap: ImageBitmap): void } } ``` - ![zh-cn_image_000000127777773](figures/zh-cn_image_000000127777773.png) + ![zh-cn_image_0000001238952387](figures/zh-cn_image_0000001238952387.png) + ### toDataURL @@ -2333,7 +2413,11 @@ restore(): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.context.restore() + this.context.save(); // save the default state + this.context.fillStyle = "green"; + this.context.fillRect(20, 20, 100, 100); + this.context.restore(); // restore to the default state + this.context.fillRect(150, 75, 100, 100); }) } .width('100%') @@ -2341,6 +2425,7 @@ restore(): void } } ``` + ![zh-cn_image_000000127777781](figures/zh-cn_image_000000127777781.png) ### save @@ -2366,14 +2451,19 @@ save(): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.context.save() - }) + this.context.save(); // save the default state + this.context.fillStyle = "green"; + this.context.fillRect(20, 20, 100, 100); + this.context.restore(); // restore to the default state + this.context.fillRect(150, 75, 100, 100); + }) } .width('100%') .height('100%') } } ``` + ![zh-cn_image_000000127777781](figures/zh-cn_image_000000127777781.png) ### createLinearGradient diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md index e74488c562..4426c3daf2 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvas.md @@ -1,9 +1,13 @@ # Canvas -> **说明:** 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - 提供画布组件,用于自定义绘制图形。 +> **说明:** +> +> 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 + + + ## 权限列表 无 @@ -34,7 +38,8 @@ Canvas(context?: CanvasRenderingContext2D) | ----------------------------- | ---- | -------------------- | | onReady(event: () => void) | 无 | 画布组件的事件回调,可以在此时进行绘制。 | -## 示例 + +**示例:** ```ts // xxx.ets @@ -59,3 +64,4 @@ struct CanvasExample { } } ``` + ![zh-cn_image_0000001194032666](figures/zh-cn_image_0000001194032666.png) \ No newline at end of file diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvasgradient.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvasgradient.md index 22b76489fe..45df677743 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvasgradient.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-canvasgradient.md @@ -1,12 +1,12 @@ # CanvasGradient对象 +渐变对象。 + > **说明:** -> +> > 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -渐变对象。 - ## addColorStop @@ -14,41 +14,44 @@ addColorStop(offset: number, color: string): void 设置渐变断点值,包括偏移和颜色。 + **参数:** -| 参数 | 类型 | 必填 | 默认值 | 描述 | -| ------ | ------ | ---- | -------- | ---------------------------- | -| offset | number | 是 | 0 | 设置渐变点距离起点的位置占总体长度的比例,范围为0到1。 | -| color | string | 是 | 'ffffff' | 设置渐变的颜色。 | + | 参数 | 类型 | 必填 | 默认值 | 描述 | + | ------ | ------ | ---- | --------- | ---------------------------- | + | offset | number | 是 | 0 | 设置渐变点距离起点的位置占总体长度的比例,范围为0到1。 | + | color | string | 是 | '#ffffff' | 设置渐变的颜色。 | + **示例:** -```ts -@Entry -@Component -struct Page45 { - 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('#ffff00') - .onReady(() =>{ - var grad = this.context.createLinearGradient(50,0, 300,100) - grad.addColorStop(0.0, 'red') - grad.addColorStop(0.5, 'white') - grad.addColorStop(1.0, 'green') - this.context.fillStyle = grad - this.context.fillRect(0, 0, 500, 500) - }) - } - .width('100%') - .height('100%') - } -} -``` - -![zh-cn_image_0000001194032516](figures/zh-cn_image_0000001194032516.png) \ No newline at end of file + ```ts + // xxx.ets + @Entry + @Component + struct Page45 { + 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('#ffff00') + .onReady(() =>{ + var grad = this.context.createLinearGradient(50,0, 300,100) + grad.addColorStop(0.0, 'red') + grad.addColorStop(0.5, 'white') + grad.addColorStop(1.0, 'green') + this.context.fillStyle = grad + this.context.fillRect(0, 0, 500, 500) + }) + } + .width('100%') + .height('100%') + }} + ``` + ![zh-cn_image_0000001194032516](figures/zh-cn_image_0000001194032516.png) + + diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md index e2f3f510be..12063d494b 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagebitmap.md @@ -1,11 +1,12 @@ # ImageBitmap对象 +ImageBitmap对象可以存储canvas渲染的像素数据。 + > **说明:** +> > 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -ImageBitmap对象可以存储canvas渲染的像素数据。 - ## 属性 @@ -14,6 +15,36 @@ ImageBitmap对象可以存储canvas渲染的像素数据。 | width | number | ImageBitmap的像素宽度。 | | height | number | ImageBitmap的像素高度。 | +**示例:** + + ```ts + // xxx.ets + @Entry + @Component + struct ImageExample { + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); + private img:ImageBitmap = new ImageBitmap("common/images/example.jpg"); + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + this.context.drawImage( this.img,0,0,500,500,0,0,400,200); + }) + } + .width('100%') + .height('100%') + } + } + ``` + + ![zh-cn_image_0000001194352442](figures/zh-cn_image_0000001194352442.png) + + ## 方法 diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md index d1df7c7a5e..00ca2d47e1 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-imagedata.md @@ -1,11 +1,12 @@ # ImageData对象 +ImageData对象可以存储canvas渲染的像素数据。 + > **说明:** +> > 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -ImageData对象可以存储canvas渲染的像素数据。 - ## 属性 @@ -15,3 +16,34 @@ ImageData对象可以存储canvas渲染的像素数据。 | height | number | 矩形区域实际像素高度。 | | data | Uint8ClampedArray | 一维数组,保存了相应的颜色数据,数据值范围为0到255。 | +**示例:** + + ```ts + // xxx.ets +@Entry +@Component +struct Translate { + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); + private img:ImageBitmap = new ImageBitmap("/common/images/1234.png") + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + this.context.drawImage(this.img,0,0,130,130); + var imagedata = this.context.getImageData(50,50,130,130); + this.context.putImageData(imagedata,150,150); + }) + } + .width('100%') + .height('100%') + } +} + ``` + + ![zh-cn_image_000000127777780](figures/zh-cn_image_000000127777780.png) + diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-lottie.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-lottie.md index e623316d52..749d836070 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-lottie.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-lottie.md @@ -1,13 +1,11 @@ # Lottie -> **说明:** -> -> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 - +提供Lottie动画。 -## 权限列表 +> **说明:** +> +> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -无 ## 导入模块 @@ -31,7 +29,8 @@ path: string, container: object, render: string, loop: boolean, autoplay: boolea 加载动画,须提前声明Animator('__lottie_ets')对象,并在Canvas完成布局后调用。可配合Canvas组件生命周期接口使用,比如onAppear()与onPageShow()。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | -------------- | --------------------------- | ---- | ---------------------------------------- | | path | string | 是 | hap包内动画资源文件路径,仅支持json格式。示例:path: "common/lottie/data.json" | @@ -49,13 +48,15 @@ destroy(name: string): void 销毁动画,页面退出时,必须调用。可配合Canvas组件生命周期接口使用,比如onDisappear()与onPageHide()。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | ---------------------------------------- | | name | string | 是 | 被指定的动画名,同loadAnimation接口参数name, 缺省时销毁所有动画。 | -- 示例 - ``` +**示例:** + ```ts + // xxx.ets import lottie from '@ohos/lottieETS' @Entry @@ -128,13 +129,15 @@ play(name: string): void 播放指定动画。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | ---------------------------------------- | | name | string | 是 | 被指定的动画名, 同loadAnimation接口参数name,缺省时播放所有动画。 | -- 示例 - ``` +**示例:** + + ```ts lottie.play(this.animateName) ``` @@ -145,13 +148,15 @@ pause(name: string): void 暂停指定动画,下次调用lottie.play()从当前帧开始。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | ---------------------------------------- | | name | string | 是 | 被指定的动画名,同loadAnimation接口入参name,缺省时暂停所有动画。 | -- 示例 - ``` +**示例:** + + ```ts lottie.pause(this.animateName) ``` @@ -162,13 +167,15 @@ togglePause(name: string): void 暂停或播放指定动画,等效于lottie.play()与lottie.pause()切换调用。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | ---------------------------------------- | | name | string | 是 | 被指定的动画名,同loadAnimation接口参数name,缺省时停止所有动画。 | -- 示例 - ``` +**示例:** + + ```ts lottie.togglePause(this.animateName) ``` @@ -179,13 +186,15 @@ stop(name: string): void 停止指定动画,下次调用lottie.play()从第一帧开始。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | ---------------------------------------- | | name | string | 是 | 被指定的动画名,同loadAnimation接口参数name,缺省时停止所有动画。 | -- 示例 - ``` +**示例:** + + ```ts lottie.stop(this.animateName) ``` @@ -196,14 +205,16 @@ setSpeed(speed: number, name: string): void 设置指定动画播放速度。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ----- | ------ | ---- | ---------------------------------------- | | speed | number | 是 | 值为浮点类型, speed>0正向播放, speed<0反向播放, speed=0暂停播放, speed=1.0/-1.0正常速度播放。 | | name | string | 是 | 被指定的动画,同loadAnimation接口参数name,缺省时停止所有动画。 | -- 示例 - ``` +**示例:** + + ```ts lottie.setSpeed(5, this.animateName) ``` @@ -214,14 +225,16 @@ setDirection(direction: AnimationDirection, name: string): void 设置指定动画播放顺序。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | --------- | ------------------ | ---- | ---------------------------------------- | | direction | AnimationDirection | 是 | 1为正向,-1为反向; 当设置为反向时,从当前播放进度开始回播直到首帧,loop值为true时可无限倒放;speed<0叠加时也是倒放。
AnimationDirection:1 \| -1 | | name | string | 是 | 被指定的动画名,同loadAnimation接口参数name,缺省时设置所有动画方向。 | -- 示例 - ``` +**示例:** + + ```ts lottie.setDirection(-1, this.animateName) ``` @@ -260,13 +273,15 @@ play(name?: string): void 播放动画。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | --------------- | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.play() ``` @@ -277,13 +292,15 @@ destroy(name?: string): void 销毁动画。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | --------------- | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.destroy() ``` @@ -294,13 +311,15 @@ pause(name?: string): void 暂停动画,下次调用play接口从当前帧开始播放。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | --------------- | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.pause() ``` @@ -311,13 +330,15 @@ togglePause(name?: string): void 暂停或播放动画,等效于play接口与pause接口之间轮换调用。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | --------------- | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.togglePause() ``` @@ -328,13 +349,15 @@ stop(name?: string): void 停止动画,下次调用play接口从第一帧开始播放。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------ | ---- | --------------- | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.stop() ``` @@ -345,13 +368,15 @@ setSpeed(speed: number): void 设置动画播放速度。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ----- | ------ | ---- | ---------------------------------------- | | speed | number | 是 | 值为浮点类型, speed>0正向播放, speed<0反向播放, speed=0暂停播放, speed=1.0 \| -1.0正常速度播放。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.setSpeed(5); ``` @@ -362,13 +387,15 @@ setDirection(direction: AnimationDirection): void 设置动画播放顺序。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | --------- | ------------------ | ---- | ---------------------------------------- | | direction | AnimationDirection | 是 | 1为正向,-1为反向; 当设置为反向时,从当前播放进度开始回播直到首帧,loop值为true时可无限倒放;speed<0叠加时也是倒放。
AnimationDirection:1 \| -1。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.setDirection(-1) ``` @@ -379,15 +406,17 @@ goToAndStop(value: number, isFrame?: boolean): void 设置动画停止在指定帧或时间进度。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ------- | ------- | ---- | ---------------------------------------- | | value | number | 是 | 帧号(值大于等于0)或时间进度(ms)。 | | isFrame | boolean | 否 | true: 按指定帧控制,false:按指定时间控制,缺省默认false。 | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts // 按帧号控制 this.animateItem.goToAndStop(25, true) // 按时间进度控制 @@ -401,15 +430,17 @@ goToAndPlay(value: number, isFrame: boolean, name?: string): void 设置动画从指定帧或时间进度开始播放。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ------- | ------- | ---- | ---------------------------------------- | | value | number | 是 | 帧号(值大于等于0)或时间进度(ms) | | isFrame | boolean | 是 | true:按指定帧控制, false:按指定时间控制,缺省默认false。 | | name | string | 否 | 被指定的动画名,缺省默认为空。 | -- 示例 - ``` +**示例:** + + ```ts // 按帧号控制 this.animateItem.goToAndPlay(25, true) // 按时间进度控制 @@ -423,14 +454,16 @@ playSegments(segments: AnimationSegment | AnimationSegment[], forceFlag: boolean 设置动画仅播放指定片段。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | --------- | ---------------------------------------- | ---- | ---------------------------------------- | | segments | AnimationSegment = [number, number] \| AnimationSegment[] | 是 | 片段或片段列表;
如果片段列表全部播放完毕后,下轮循环播放仅播放最后一个片段 | | forceFlag | boolean | 是 | true:即时生效播放,false:延迟到下轮循环播放再生效 | -- 示例 - ``` +**示例:** + + ```ts // 指定播放片段 this.animateItem.playSegments([10, 20], false) // 指定播放片段列表 @@ -444,13 +477,15 @@ resetSegments(forceFlag: boolean): void 重置动画播放片段,播放全帧。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | --------- | ------- | ---- | ------------------------------ | | forceFlag | boolean | 是 | true:即时生效播放,false:延迟到下轮循环播放再生效 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.resetSegments(true) ``` @@ -461,8 +496,9 @@ resize(): void 刷新动画布局。 -- 示例 - ``` +**示例:** + + ```ts this.animateItem.resize() ``` @@ -473,13 +509,15 @@ setSubframe(useSubFrame: boolean): void 设置属性currentFrame的精度显示浮点数。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ------------ | ------- | ---- | ---------------------------------------- | | useSubFrames | boolean | 是 | currentFrame属性默认显示浮点数,该接口参数将影响currentFrame属性的精度。
true:属性currentFrame显示浮点。
false:属性currentFrame去浮点数显示整数。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.setSubframe(false) ``` @@ -490,13 +528,15 @@ getDuration(inFrames?: boolean): void 获取动画单次完整播放的时间(与播放速度无关)或帧数, 与Lottie.loadAnimation接口入参initialSegment有关。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | -------- | ------- | ---- | ---------------------------------------- | | inFrames | boolean | 否 | true:获取帧数, false:获取时间(单位ms),缺省默认false。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.getDuration(true) ``` @@ -507,14 +547,16 @@ addEventListener<T = any>(name: AnimationEventName, callback: AnimationEve 添加侦听事件, 事件完成后会触发指定回调函数。返回可删除该侦听事件的函数对象。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | -------- | ------------------------------- | ---- | ---------------------------------------- | | name | AnimationEventName | 是 | 指定动画事件类型,Lottie内置动画事件类型AnimationEventName:
'enterFrame'、'loopComplete'、'complete'、'segmentStart'、'destroy'、'config_ready'、'data_ready'、'DOMLoaded'、'error'、'data_failed'、'loaded_images' | | callback | AnimationEventCallback<T> | 是 | 用户自定义回调函数 | -- 示例 - ``` +**示例:** + + ```ts private callbackItem: any = function() { console.log("grunt loopComplete") } @@ -531,14 +573,16 @@ removeEventListener<T = any>(name: AnimationEventName, callback?: Animatio 删除侦听事件。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | -------- | ------------------------------- | ---- | ---------------------------------------- | | name | AnimationEventName | 是 | 指定动画事件类型,Lottie内置动画事件类型AnimationEventName:
'enterFrame'、'loopComplete'、'complete'、'segmentStart'、'destroy'、'config_ready'、'data_ready'、'DOMLoaded'、'error'、'data_failed'、'loaded_images' | | callback | AnimationEventCallback<T> | 是 | 用户自定义回调函数;缺省为空时, 删除此事件的所有回调函数。 | -- 示例 - ``` +**示例:** + + ```ts this.animateItem.removeEventListener('loopComplete', this.animateName) ``` @@ -549,14 +593,16 @@ triggerEvent<T = any>(name: AnimationEventName, args: T): void 直接触发指定事件的所有已设置的回调函数。 -- 参数 +**参数:** + | 参数 | 类型 | 必填 | 描述 | | ---- | ------------------ | ---- | --------- | | name | AnimationEventName | 是 | 指定动画事件类型 | | args | any | 是 | 用户自定义回调参数 | -- 示例 - ``` +**示例:** + + ```ts private triggerCallBack: any = function(item) { console.log("trigger loopComplete, name:" + item.name) } diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md index 63004c2e78..b37d56db73 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-components-canvas-path2d.md @@ -1,11 +1,12 @@ # Path2D对象 +路径对象,支持通过对象的接口进行路径的描述,并通过Canvas的stroke接口进行绘制。 + > **说明:** +> > 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -路径对象,支持通过对象的接口进行路径的描述,并通过Canvas的stroke接口进行绘制。 - ## addPath @@ -225,7 +226,8 @@ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, .backgroundColor('#ffff00') .onReady(() =>{ this.path2Db.moveTo(10, 10) - this.path2Db.bezierCurveTo(20, 100, 200, 100, 200, 20);this.context.stroke(this.path2Db) + this.path2Db.bezierCurveTo(20, 100, 200, 100, 200, 20) + this.context.stroke(this.path2Db) }) } .width('100%') @@ -319,7 +321,8 @@ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.path2Db.arc(100, 75, 50, 0, 6.28);this.context.stroke(this.path2Db) + this.path2Db.arc(100, 75, 50, 0, 6.28) + this.context.stroke(this.path2Db) }) } .width('100%') @@ -407,7 +410,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private path2Db: Path2D = new Path2D() - + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -415,7 +418,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.path2Db.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI) + this.path2Db.ellipse(200, 200, 50, 100, 0, Math.PI * 1, Math.PI*2) this.context.stroke(this.path2Db) }) } @@ -461,7 +464,8 @@ rect(x: number, y: number, w: number, h: number): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.path2Db.rect(20, 20, 100, 100);this.context.stroke(this.path2Db) + this.path2Db.rect(20, 20, 100, 100); + this.context.stroke(this.path2Db) }) } .width('100%') diff --git a/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md b/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md index 708ffa6e29..9b00417d7d 100644 --- a/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md +++ b/zh-cn/application-dev/reference/arkui-ts/ts-offscreencanvasrenderingcontext2d.md @@ -1,11 +1,12 @@ # OffscreenCanvasRenderingContext2D对象 +使用OffscreenCanvasRenderingContext2D在Canvas上进行离屏绘制,绘制对象可以是矩形、文本、图片等。离屏绘制是指将需要绘制的内容先绘制在缓存区,然后将其转换成图片,一次性绘制到canvas上,加快了绘制速度。 + > **说明:** -> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 +> +> 从 API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 -使用OffscreenCanvasRenderingContext2D在Canvas上进行离屏绘制,绘制对象可以是矩形、文本、图片等。离屏绘制是指将需要绘制的内容先绘制在缓存区,然后将其转换成图片,一次性绘制到canvas上,加快了绘制速度。 - ## 接口 @@ -40,8 +41,7 @@ OffscreenCanvasRenderingContext2D(width: number, height: number, setting: Render | [shadowColor](#shadowcolor) | string | 设置绘制阴影时的阴影颜色。 | | [shadowOffsetX](#shadowoffsetx) | number | 设置绘制阴影时和原有对象的水平偏移值。 | | [shadowOffsetY](#shadowoffsety) | number | 设置绘制阴影时和原有对象的垂直偏移值。 | -| [imageSmoothingEnabled](#imagesmoothingenabled) | boolean | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。
- 默认值:true。 | -| imageSmoothingQuality | string | 用于设置图像平滑度,支持如下三种类型:'low', 'medium', 'high'。
- 默认值:'low'。 | +| [imageSmoothingEnabled](#imagesmoothingenabled) | boolean | 用于设置绘制图片时是否进行图像平滑度调整,true为启用,false为不启用。
- 默认值:true。 | > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** >fillStyle、shadowColor与 strokeStyle 中string类型格式为 'rgb(255, 255, 255)','rgba(255, 255, 255, 1.0)','\#FFFFFF'。 @@ -572,8 +572,7 @@ struct ShadowColor { this.offContext.shadowColor = 'rgb(0,0,255)' this.offContext.fillStyle = 'rgb(255,0,0)' this.offContext.fillRect(30, 30, 100, 100) - var image = this.offContext.transferToImageBitmap -() + var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) }) } @@ -739,7 +738,7 @@ fillRect(x: number, y: number, w: number, h: number): void } ``` - ![zh-cn_image_0000001238832407](figures/zh-cn_image_0000001238832407.png) + ![zh-cn_image_0000001194192436](figures/zh-cn_image_0000001194192436.png) ### strokeRect @@ -767,6 +766,7 @@ strokeRect(x: number, y: number, w: number, h: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -785,7 +785,7 @@ strokeRect(x: number, y: number, w: number, h: number): void } ``` - ![zh-cn_image_0000001238712441](figures/zh-cn_image_0000001238712441.png) + ![zh-cn_image_0000001194352436](figures/zh-cn_image_0000001194352436.png) ### clearRect @@ -813,6 +813,7 @@ clearRect(x: number, y: number, w: number, h: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -821,8 +822,8 @@ clearRect(x: number, y: number, w: number, h: number): void .backgroundColor('#ffff00') .onReady(() =>{ this.offContext.fillStyle = 'rgb(0,0,255)' - this.offContext.fillRect(0,0,500,500) - this.offContext.clearRect(20,20,150,100) + this.offContext.fillRect(20,20,200,200) + this.offContext.clearRect(30,30,150,100) var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) }) @@ -833,7 +834,7 @@ clearRect(x: number, y: number, w: number, h: number): void } ``` - ![zh-cn_image_0000001194192458](figures/zh-cn_image_0000001194192458.png) + ![zh-cn_image_0000001238952377](figures/zh-cn_image_0000001238952377.png) ### fillText @@ -861,6 +862,7 @@ fillText(text: string, x: number, y: number, maxWidth?: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -880,7 +882,7 @@ fillText(text: string, x: number, y: number, maxWidth?: number): void } ``` - ![zh-cn_image_0000001194352454](figures/zh-cn_image_0000001194352454.png) + ![zh-cn_image_0000001194032458](figures/zh-cn_image_0000001194032458.png) ### strokeText @@ -908,6 +910,7 @@ strokeText(text: string, x: number, y: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -976,6 +979,7 @@ measureText(text: string): TextMetrics private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1012,7 +1016,7 @@ stroke(path?: Path2D): void | path | [Path2D](ts-components-canvas-path2d.md) | 否 | null | 需要绘制的Path2D。 | **示例:** - + ```ts // xxx.ets @Entry @@ -1021,6 +1025,7 @@ stroke(path?: Path2D): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1030,6 +1035,8 @@ stroke(path?: Path2D): void .onReady(() =>{ this.offContext.moveTo(25, 25) this.offContext.lineTo(25, 105) + this.offContext.lineTo(75, 105) + this.offContext.lineTo(75, 25) this.offContext.strokeStyle = 'rgb(0,0,255)' this.offContext.stroke() var image = this.offContext.transferToImageBitmap() @@ -1042,7 +1049,7 @@ stroke(path?: Path2D): void } ``` - ![zh-cn_image_0000001239032427](figures/zh-cn_image_0000001239032427.png) + ![zh-cn_image_0000001238832389](figures/zh-cn_image_0000001238832389.png) ### beginPath @@ -1061,6 +1068,7 @@ beginPath(): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1110,6 +1118,7 @@ moveTo(x: number, y: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1157,6 +1166,7 @@ lineTo(x: number, y: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1197,6 +1207,7 @@ closePath(): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1253,6 +1264,7 @@ createPattern(image: ImageBitmap, repetition: string | null): CanvasPattern | nu private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private img:ImageBitmap = new ImageBitmap("common/images/icon.jpg") private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1303,6 +1315,7 @@ bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1352,6 +1365,7 @@ quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1403,6 +1417,7 @@ arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1452,6 +1467,7 @@ arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1512,7 +1528,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number .backgroundColor('#ffff00') .onReady(() =>{ this.offContext.beginPath() - this.offContext.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI) + this.offContext.ellipse(200, 200, 50, 100, Math.PI * 0.25, Math.PI * 0.5, Math.PI * 2) this.offContext.stroke() var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) @@ -1524,7 +1540,7 @@ ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number } ``` - ![zh-cn_image_0000001238832411](figures/zh-cn_image_0000001238832411.png) + ![zh-cn_image_0000001194192440](figures/zh-cn_image_0000001194192440.png) ### rect @@ -1552,6 +1568,7 @@ rect(x: number, y: number, w: number, h: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1576,11 +1593,15 @@ rect(x: number, y: number, w: number, h: number): void ### fill -fill(): void +fill(fillRule?: CanvasFillRule): void 对封闭路径进行填充。 - **示例:** +**参数:** + +| 参数 | 类型 | 必填 | 默认值 | 描述 | +| -------- | -------------- | ---- | --------- | ---------------------------------------- | +| fillRule | CanvasFillRule | 否 | "nonzero" | 指定要填充对象的规则。
可选参数为:"nonzero", "evenodd"。 | ```ts // xxx.ets @@ -1590,6 +1611,7 @@ fill(): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1612,12 +1634,73 @@ fill(): void ![zh-cn_image_0000001194192462](figures/zh-cn_image_0000001194192462.png) +fill(path: Path2D, fillRule?: CanvasFillRule): void + +对封闭路径进行填充。 + +**参数:** + +| 参数 | 类型 | 必填 | 默认值 | 描述 | +| -------- | -------------- | ---- | --------- | ---------------------------------------- | +| path | Path2D | 是 | | Path2D填充路径。 | +| fillRule | CanvasFillRule | 否 | "nonzero" | 指定要填充对象的规则。
可选参数为:"nonzero", "evenodd"。 | + + +**示例:** + +```ts +// xxx.ets +@Entry +@Component +struct Fill { + private settings: RenderingContextSettings = new RenderingContextSettings(true) + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + let region = new Path2D(); + region.moveTo(30, 90); + region.lineTo(110, 20); + region.lineTo(240, 130); + region.lineTo(60, 130); + region.lineTo(190, 20); + region.lineTo(270, 90); + region.closePath(); + // Fill path + this.offContext.fillStyle = 'green'; + this.offContext.fill(region, "evenodd"); + var image = this.offContext.transferToImageBitmap() + this.context.transferFromImageBitmap(image) + }) + } + .width('100%') + .height('100%') + } +} +``` + + ![zh-cn_image_000000127777775](figures/zh-cn_image_000000127777775.png) + + + ### clip -clip(): void +clip(fillRule?: CanvasFillRule): void 设置当前路径为剪切路径。 +**参数:** + +| 参数 | 类型 | 必填 | 默认值 | 描述 | +| -------- | -------------- | ---- | --------- | ---------------------------------------- | +| fillRule | CanvasFillRule | 否 | "nonzero" | 指定要剪切对象的规则。
可选参数为:"nonzero", "evenodd"。 | + **示例:** ```ts @@ -1628,6 +1711,7 @@ clip(): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1635,11 +1719,11 @@ clip(): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.offContext.rect(0, 0, 200, 200) + this.offContext.rect(0, 0, 100, 200) this.offContext.stroke() this.offContext.clip() this.offContext.fillStyle = "rgb(255,0,0)" - this.offContext.fillRect(0, 0, 150, 150) + this.offContext.fillRect(0, 0, 200, 200) var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) }) @@ -1650,7 +1734,90 @@ clip(): void } ``` - ![zh-cn_image_0000001194352458](figures/zh-cn_image_0000001194352458.png) + ![zh-cn_image_0000001194032462](figures/zh-cn_image_0000001194032462.png) + + +clip(path:Path2D, fillRule?: CanvasFillRule): void + +设置封闭路径为剪切路径。 + +**参数:** + +| 参数 | 类型 | 必填 | 默认值 | 描述 | +| -------- | -------------- | ---- | --------- | ---------------------------------------- | +| path | Path2D | 是 | | Path2D剪切路径。 | +| fillRule | CanvasFillRule | 否 | "nonzero" | 指定要剪切对象的规则。
可选参数为:"nonzero", "evenodd"。 | + + **示例:** + + ```ts + // xxx.ets +@Entry +@Component +struct Clip { + private settings: RenderingContextSettings = new RenderingContextSettings(true) + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + let region = new Path2D(); + region.rect(80,10,20,130); + region.rect(40,50,100,50); + this.offContext.clip(region,"evenodd") + this.offContext.fillStyle = "rgb(255,0,0)" + this.offContext.fillRect(0, 0, 600, 600) + var image = this.offContext.transferToImageBitmap() + this.context.transferFromImageBitmap(image) + }) + } + .width('100%') + .height('100%') + } +} + ``` + + ![zh-cn_image_000000127777779](figures/zh-cn_image_000000127777779.png) + + + +### filter + +filter(filter: string): void + +为Canvas图形设置各类滤镜效果。该接口为空接口。 + +**参数:** + +| 参数 | 类型 | 必填 | 默认值 | 说明 | +| ------ | ------ | ---- | ---- | ------------ | +| filter | string | 是 | - | 接受各类滤镜效果的函数。 | + + +### getTransform + +getTransform(): Matrix2D + +获取当前被应用到上下文的转换矩阵。该接口为空接口。 + + +### resetTransform + +resetTransform(): void + +使用单位矩阵重新设置当前变形。该接口为空接口。 + + +### direction + +direction(direction: CanvasDirection): void + +绘制文本时,描述当前文本方向的属性。该接口为空接口。 ### rotate @@ -1675,6 +1842,7 @@ rotate(angle: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1720,6 +1888,7 @@ scale(x: number, y: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1727,9 +1896,10 @@ scale(x: number, y: number): void .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.offContext.strokeRect(10, 10, 25, 25) + this.offContext.lineWidth = 3 + this.offContext.strokeRect(30, 30, 50, 50) this.offContext.scale(2, 2) // Scale to 200% - this.offContext.strokeRect(10, 10, 25, 25) + this.offContext.strokeRect(30, 30, 50, 50) var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) }) @@ -1740,7 +1910,7 @@ scale(x: number, y: number): void } ``` - ![zh-cn_image_0000001194032484](figures/zh-cn_image_0000001194032484.png) + ![zh-cn_image_0000001193872498](figures/zh-cn_image_0000001193872498.png) ### transform @@ -1777,6 +1947,7 @@ transform方法对应一个变换矩阵,想对一个图形进行变化的时 private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1832,6 +2003,7 @@ setTransfrom方法使用的参数和transform()方法相同,但setTransform() private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1880,6 +2052,7 @@ translate(x: number, y: number): void private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -1934,7 +2107,7 @@ drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sw: number, sh: // xxx.ets @Entry @Component - struct Index { + struct DrawImage { private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private img:ImageBitmap = new ImageBitmap("common/images/icon.jpg") @@ -1964,7 +2137,7 @@ drawImage(image: ImageBitmap | PixelMap, sx: number, sy: number, sw: number, sh: createImageData(sw: number, sh: number): ImageData -根据宽高创建ImageData对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。 +根据宽高创建ImageData对象,请参考[ImageData](ts-components-canvas-imagedata.md)。 **参数:** @@ -1974,23 +2147,21 @@ createImageData(sw: number, sh: number): ImageData | sh | number | 是 | 0 | ImageData的高度。 | -### createImageData - createImageData(imageData: ImageData): ImageData -根据已创建的ImageData对象创建新的ImageData对象,请参考[ImageData](ts-components-canvas-imagebitmap.md)。 +根据已创建的ImageData对象创建新的ImageData对象,请参考[ImageData](ts-components-canvas-imagedata.md)。 **参数:** | 参数 | 类型 | 必填 | 默认 | 描述 | | --------- | ---------------------------------------- | ---- | ---- | ---------------- | -| imagedata | [ImageData](ts-components-canvas-imagebitmap.md) | 是 | null | 被复制的ImageData对象。 | +| imagedata | [ImageData](ts-components-canvas-imagedata.md) | 是 | null | 被复制的ImageData对象。 | **返回值:** -| 类型 | 说明 | -| ---------- | ---------------------------------------- | -| [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象 | +| 类型 | 说明 | +| ---------------------------------------- | ------------- | +| [ImageData](ts-components-canvas-imagedata.md) | 新的ImageData对象 | ### getPixelMap @@ -2018,7 +2189,7 @@ getPixelMap(sx: number, sy: number, sw: number, sh: number): PixelMap getImageData(sx: number, sy: number, sw: number, sh: number): ImageData -以当前canvas指定区域内的像素创建[ImageData](ts-components-canvas-imagebitmap.md)对象。 +以当前canvas指定区域内的像素创建[ImageData](ts-components-canvas-imagedata.md)对象。 **参数:** @@ -2031,9 +2202,44 @@ getImageData(sx: number, sy: number, sw: number, sh: number): ImageData **返回值:** -| 类型 | 说明 | -| ---------- | ---------------------------------------- | -| [ImageData](ts-components-canvas-imagebitmap.md) | 新的ImageData对象 | +| 类型 | 说明 | +| ---------------------------------------- | ------------- | +| [ImageData](ts-components-canvas-imagedata.md) | 新的ImageData对象 | + + +**示例:** + + ```ts + // xxx.ets +@Entry +@Component +struct GetImageData { + private settings: RenderingContextSettings = new RenderingContextSettings(true); + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings); + private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + private img:ImageBitmap = new ImageBitmap("/common/images/1234.png") + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + this.offContext.drawImage(this.img,0,0,130,130); + var imagedata = this.offContext.getImageData(50,50,130,130); + this.offContext.putImageData(imagedata,150,150); + var image = this.offContext.transferToImageBitmap() + this.context.transferFromImageBitmap(image) + }) + } + .width('100%') + .height('100%') + } +} + ``` + + ![zh-cn_image_000000127777780](figures/zh-cn_image_000000127777780.png) ### putImageData @@ -2042,7 +2248,7 @@ putImageData(imageData: Object, dx: number, dy: number): void putImageData(imageData: Object, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth?: number, dirtyHeight: number): void -使用[ImageData](ts-components-canvas-imagebitmap.md)数据填充新的矩形区域。 +使用[ImageData](ts-components-canvas-imagedata.md)数据填充新的矩形区域。 **参数:** @@ -2153,21 +2359,29 @@ getLineDash(): number[] ```ts // xxx.ets - @Entry - @Component - struct GetLineDash { +@Entry +@Component +struct OffscreenCanvasGetLineDash { + @State message: string = 'Hello World' private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) - - build() { - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + .onClick(()=>{ + console.error('before getlinedash clicked') + let res = this.offContext.getLineDash() + console.error(JSON.stringify(res)) + }) Canvas(this.context) .width('100%') .height('100%') .backgroundColor('#ffff00') - .onReady(() =>{ - var grad = this.context.createLinearGradient(50,0, 300,100) + .onReady(() => { this.offContext.arc(100, 75, 50, 0, 6.28) this.offContext.setLineDash([10,20]) this.offContext.stroke(); @@ -2177,53 +2391,14 @@ getLineDash(): number[] }) } .width('100%') - .height('100%') } + .height('100%') } +} ``` +![zh-cn_image_000000127777778](figures/zh-cn_image_000000127777778.png) -### transferFromImageBitmap - -transferFromImageBitmap(bitmap: ImageBitmap): void - -显示给定的ImageBitmap对象。 - -**参数:** - -| 参数 | 类型 | 描述 | -| ------ | ----------- | ------------------ | -| bitmap | [ImageData](ts-components-canvas-imagebitmap.md) | 待显示的ImageBitmap对象。 | - -**示例:** - - ```ts - // xxx.ets - @Entry - @Component - struct GetLineDash { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) - private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) - - build() { - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { - Canvas(this.context) - .width('100%') - .height('100%') - .backgroundColor('#ffff00') - .onReady(() =>{ - this.offContext.fillRect(0, 0, 200, 200) - var image = this.offContext.transferToImageBitmap() - this.context.transferFromImageBitmap(image) - }) - } - .width('100%') - .height('100%') - } - } - ``` - ![zh-cn_image_000000127777773](figures/zh-cn_image_000000127777773.png) ### toDataURL @@ -2247,7 +2422,7 @@ toDataURL(type?: string, quality?: number): string **示例:** ```ts - // xxx.ets +// xxx.ets @Entry @Component struct ToDataURL { @@ -2272,6 +2447,19 @@ struct ToDataURL { ``` +### imageSmoothingQuality + +imageSmoothingQuality(quality: imageSmoothingQuality) + +用于设置图像平滑度。该接口为空接口。 + + **参数:** + +| 参数 | 类型 | 描述 | +| ------- | --------------------- | ---------------------------------------- | +| quality | imageSmoothingQuality | 支持如下三种类型:'low', 'medium', 'high'。 | + + ### transferToImageBitmap transferToImageBitmap(): ImageBitmap @@ -2282,7 +2470,7 @@ transferToImageBitmap(): ImageBitmap | 类型 | 说明 | | ---------------------------------------- | --------------- | -| [ImageData](ts-components-canvas-imagebitmap.md)| 存储离屏画布上渲染的像素数据。 | +| [ImageBitmap](ts-components-canvas-imagebitmap.md) | 存储离屏画布上渲染的像素数据。 | **示例:** @@ -2291,10 +2479,11 @@ transferToImageBitmap(): ImageBitmap // xxx.ets @Entry @Component - struct CanvasExample { + struct PutImageData { private settings: RenderingContextSettings = new RenderingContextSettings(true) private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Canvas(this.context) @@ -2302,7 +2491,14 @@ transferToImageBitmap(): ImageBitmap .height('100%') .backgroundColor('#ffff00') .onReady(() =>{ - this.offContext.restore() + var imageData = this.offContext.createImageData(100, 100) + for (var i = 0; i < imageData.data.length; i += 4) { + imageData.data[i + 0] = 255 + imageData.data[i + 1] = 0 + imageData.data[i + 2] = 255 + imageData.data[i + 3] = 255 + } + this.offContext.putImageData(imageData, 10, 10) var image = this.offContext.transferToImageBitmap() this.context.transferFromImageBitmap(image) }) @@ -2312,6 +2508,7 @@ transferToImageBitmap(): ImageBitmap } } ``` +![zh-cn_image_0000001238952387](figures/zh-cn_image_0000001238952387.png) ### restore @@ -2323,29 +2520,35 @@ restore(): void ```ts // xxx.ets - @Entry - @Component - struct CanvasExample { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) - private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) - build() { - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { - Canvas(this.context) - .width('100%') - .height('100%') - .backgroundColor('#ffff00') - .onReady(() =>{ - this.offContext.restore() - var image = this.offContext.transferToImageBitmap() - this.context.transferFromImageBitmap(image) - }) - } - .width('100%') - .height('100%') +@Entry +@Component +struct CanvasExample { + private settings: RenderingContextSettings = new RenderingContextSettings(true) + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + this.offContext.save(); // save the default state + this.offContext.fillStyle = "green"; + this.offContext.fillRect(20, 20, 100, 100); + this.offContext.restore(); // restore to the default state + this.offContext.fillRect(150, 75, 100, 100); + var image = this.offContext.transferToImageBitmap() + this.context.transferFromImageBitmap(image) + }) } + .width('100%') + .height('100%') } +} ``` +![zh-cn_image_000000127777781](figures/zh-cn_image_000000127777781.png) ### save @@ -2358,29 +2561,35 @@ save(): void ```ts // xxx.ets - @Entry - @Component - struct CanvasExample { - private settings: RenderingContextSettings = new RenderingContextSettings(true) - private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) - private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) - build() { - Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { - Canvas(this.context) - .width('100%') - .height('100%') - .backgroundColor('#ffff00') - .onReady(() =>{ - this.offContext.save() - var image = this.offContext.transferToImageBitmap() - this.context.transferFromImageBitmap(image) +@Entry +@Component +struct CanvasExample { + private settings: RenderingContextSettings = new RenderingContextSettings(true) + private context: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.settings) + private offContext: OffscreenCanvasRenderingContext2D = new OffscreenCanvasRenderingContext2D(600, 600, this.settings) + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Canvas(this.context) + .width('100%') + .height('100%') + .backgroundColor('#ffff00') + .onReady(() =>{ + this.offContext.save(); // save the default state + this.offContext.fillStyle = "green"; + this.offContext.fillRect(20, 20, 100, 100); + this.offContext.restore(); // restore to the default state + this.offContext.fillRect(150, 75, 100, 100); + var image = this.offContext.transferToImageBitmap() + this.context.transferFromImageBitmap(image) }) - } - .width('100%') - .height('100%') } + .width('100%') + .height('100%') } +} ``` +![zh-cn_image_000000127777781](figures/zh-cn_image_000000127777781.png) ### createLinearGradient -- GitLab