跳到主要内容

路径效果

离散路径效果

创建一个效果,将路径分割成一定长度的线段,并使端点在原始路径的基础上随机移动,最大偏移量为指定值。

名称类型描述
lengthnumber子线段的长度。
deviationnumber端点移动的限制。
seednumber修改随机性。有关详细信息,请参阅 SkDiscretePathEffect.h。
children?PathEffect可选的路径效果,用于应用。

示例

tsx
import {Canvas, DiscretePathEffect, Path} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Discrete = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB">
<DiscretePathEffect length={10} deviation={2} />
</Path>
</Canvas>
);
};
tsx
import {Canvas, DiscretePathEffect, Path} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Discrete = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB">
<DiscretePathEffect length={10} deviation={2} />
</Path>
</Canvas>
);
};

结果

Discrete Path Effect

虚线路径效果

创建一个向路径添加虚线的效果。

名称类型描述
intervalsnumber[]偶数个条目,偶数索引指定“开”间隔的长度,奇数索引指定“关”间隔的长度。
phasenumber进入间隔数组的偏移量。默认为 0。
children?PathEffect可选的路径效果,用于应用。

示例

tsx
import {Canvas, DashPathEffect, Path} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Discrete = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={4}>
<DashPathEffect intervals={[4, 4]} />
</Path>
</Canvas>
);
};
tsx
import {Canvas, DashPathEffect, Path} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Discrete = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={4}>
<DashPathEffect intervals={[4, 4]} />
</Path>
</Canvas>
);
};

结果

Dash Path Effect

圆角路径效果

创建一个可以将尖角转换为圆角的效果。

名称类型描述
rnumber半径。
children?PathEffect可选的路径效果,用于应用。

示例

tsx
import {Canvas, CornerPathEffect, Rect} from "@shopify/react-native-skia";
 
 
const Discrete = () => {
return (
<Canvas style={{ flex: 1 }}>
<Rect
x={64}
y={16}
width={128}
height={256 - 16}
color="#61DAFB"
>
<CornerPathEffect r={64} />
</Rect>
</Canvas>
);
};
tsx
import {Canvas, CornerPathEffect, Rect} from "@shopify/react-native-skia";
 
 
const Discrete = () => {
return (
<Canvas style={{ flex: 1 }}>
<Rect
x={64}
y={16}
width={128}
height={256 - 16}
color="#61DAFB"
>
<CornerPathEffect r={64} />
</Rect>
</Canvas>
);
};

结果

Corner Path Effect

路径 1D 路径效果

通过复制指定的路径来创建虚线。

名称类型描述
pathPathDef要复制(虚线)的路径
advancenumber路径实例之间的空间
phasenumber沿路径的距离(mod advance)作为其初始位置
stylePath1DEffectStyle如何在每个点转换路径(基于当前位置和切线)
children?PathEffect可选的路径效果,用于应用。

示例

tsx
import {Canvas, Path1DPathEffect, Path} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Path1D = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={15}>
<Path1DPathEffect
path="M -10 0 L 0 -10, 10 0, 0 10 Z"
advance={20}
phase={0}
style="rotate"
/>
</Path>
</Canvas>
);
};
tsx
import {Canvas, Path1DPathEffect, Path} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Path1D = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={15}>
<Path1DPathEffect
path="M -10 0 L 0 -10, 10 0, 0 10 Z"
advance={20}
phase={0}
style="rotate"
/>
</Path>
</Canvas>
);
};

结果

Corner Path Effect

路径 2D 路径效果

使用矩阵定义网格,将指定的路径印章以填充形状。

名称类型描述
pathPathDef要使用的路径
matrixSkMatrix要应用的矩阵
children?PathEffect可选的路径效果,用于应用

示例

tsx
import {Canvas, Path2DPathEffect, Path, processTransform2d} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Path2D = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={15}>
<Path2DPathEffect
path="M -10 0 L 0 -10, 10 0, 0 10 Z"
matrix={processTransform2d([{ scale: 40 }])}
/>
</Path>
</Canvas>
);
};
tsx
import {Canvas, Path2DPathEffect, Path, processTransform2d} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Path2D = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={15}>
<Path2DPathEffect
path="M -10 0 L 0 -10, 10 0, 0 10 Z"
matrix={processTransform2d([{ scale: 40 }])}
/>
</Path>
</Canvas>
);
};

结果

Corner Path Effect

线条 2D 路径效果

使用矩阵定义网格,将指定的路径印章以填充形状。

名称类型描述
widthPathDef要使用的路径
matrixIMatrix要应用的矩阵
children?PathEffect可选的路径效果,用于应用

示例

tsx
import {Canvas, Line2DPathEffect, Path, processTransform2d} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Line2D = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={15}>
<Line2DPathEffect
width={0}
matrix={processTransform2d([{ scale: 8 }])}
/>
</Path>
</Canvas>
);
};
tsx
import {Canvas, Line2DPathEffect, Path, processTransform2d} from "@shopify/react-native-skia";
 
const logo = "M256 128.015C256 111.057 234.762...";
 
const Line2D = () => {
return (
<Canvas style={{ flex: 1 }}>
<Path path={logo} color="#61DAFB" style="stroke" strokeWidth={15}>
<Line2DPathEffect
width={0}
matrix={processTransform2d([{ scale: 8 }])}
/>
</Path>
</Canvas>
);
};

结果

Corner Path Effect