本文原创发布在华为开发者社区。
介绍
- 对Image组件设置clipShape属性,并通过PathShape传入不同的裁剪命令,将Image组件裁剪为不同形状。
- 使用Path组件,通过设置commands属性,并传入不同的绘制命令,绘制出带圆角的不同形状的组件。
效果预览
使用说明
安装到手机后点击应用图标即可进入本应用。点击不同按钮,查看clipShape裁剪组件和Path绘制圆角形状组件。
实现思路
在RoundedCornerClipShape中实现clipShape裁剪Image组件。
// 定义PathShape绘制的路线 /* 绘制原始图形,即不裁剪,绘制路线的单位为px,宽高默认单位为vp,可以按需要使用像素单位转换方法进行转换 */ commands1: string = `M0 0 L${vp2px(300)} 0 L${vp2px(300)} ${vp2px(200)} L0 ${vp2px(200)} Z` /* 将图片裁剪为三角形 * commands的命令M是定义绘制的起点,如M0 0是定义点(0, 0)为绘制起点 * commands的命令L是绘制当前点到指定点的直线,如L600 0是绘制当前点到(600, 0)的直线 * commands的命令Z是指绘制当前点到起点的直线并结束绘制 */ commands2: string = 'M0 0 L600 0 L600 300 Z' /* 将图片裁剪为带圆角的不规则图形 * commands的命令H是绘制当前点到对应x坐标的点的水平线,如M0 100 H300是绘制从(0, 100)到(300, 100)的水平线 * commands的命令V是绘制当前点到对应y坐标的点的垂直线,如M100 0 V300是绘制从(100, 0)到(100, 300)的垂直线 * commands的命令S是绘制当前点到终点的二次贝塞尔曲线,前两个值是设置控制点,后两个值是曲线终点 */ commands3: string = 'M0 100 S0 0 100 0 H300 S400 0 400 100 V300 S400 400 300 400 H200Z'
在RoundedCornerPath中实现使用Path组件绘制不同形状。
Row() { // 绘制上一示例的带圆角的不规则图形 Path() .fill(Color.Pink) .stroke(Color.Blue) // 命令与上一示例的commands3相同 .commands('M0 100 S0 0 100 0 H300 S400 0 400 100 V300 S400 400 300 400 H200Z') // 绘制带圆角的三角形 Path() .fill(Color.Brown) .commands('M120 150 L480 150 S600 150 480 90 L360 30 S300 0 240 30 L120 90 S0 150 120 150Z') }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。