Polyline
Vẽ một đường đa tuyến bằng cách nối một tập hợp các điểm theo trình tự. closed có thể nối điểm cuối cùng và điểm đầu tiên để tạo thành một đường viền khép kín và cho phép lấp đầy; tọa độ sử dụng số điểm trong View hiện tại.
Ví dụ
function main() {
return (
<Polyline
points={[
{ x: 0, y: 80 },
{ x: 60, y: 10 },
{ x: 120, y: 80 },
]}
closed={true}
background="#30B3A233"
stroke={$env.accent}
lineWidth={3}
/>
);
}
Cách sử dụng
- points nối theo thứ tự; dưới hai điểm không vẽ. closed=true nối cuối về đầu và cho phép background. Tọa độ là điểm, không phải phần trăm.
- contentAnimation chuyển chữ, ảnh hoặc dữ liệu cấu trúc. interpolate cần số điểm/closed Polyline, chuỗi lệnh Path hoặc mẫu biểu đồ tương ứng. Đổi cấu trúc cập nhật ngay.
Thuộc tính
pointsReadonlyArray<ViewPoint>Tọa độ điểm cục bộ tính bằng pt. Ít hơn hai điểm sẽ không vẽ.
[{x: 0, y: 20}, {x: 40, y: 0}, {x: 80, y: 40}]closed?booleanNối điểm cuối về đầu; đường kín cho phép tô background.
falsebackground?PaintMàu tô bên trong đường gấp khúc kín. Bỏ qua khi closed là false.
"clear"stroke?PaintMàu hoặc chuyển màu của nét; clear ẩn nét.
HDR($env.dark ? "white" : "black")lineWidth?numberĐộ dày nét theo điểm; 0 không vẽ nét.
2lineCap?"round" | "butt" | "square"Đầu nét: butt cắt tại điểm, square kéo dài vuông, round bo tròn.
"round"lineJoin?"round" | "miter" | "bevel"Hình mối nối: miter, round hoặc bevel.
"round"dash?number[]Độ dài nét và khoảng trống xen kẽ theo điểm; mảng rỗng là nét liền.
[]dashPhase?numberĐộ dịch mẫu nét đứt theo điểm.
0trimStart?numberĐoạn đường hiện trimStart–trimEnd trong 0–1. Circle/Ellipse/Arc dùng góc.
0trimEnd?numberĐoạn đường hiện trimStart–trimEnd trong 0–1. Circle/Ellipse/Arc dùng góc.
1contentAnimation?ContentAnimationChuyển tiếp nội dung tùy chọn. interpolate yêu cầu cùng số điểm và trạng thái đóng; nếu khác sẽ cập nhật ngay.
{type: "interpolate", duration: 0.25}Thuộc tính chung
width?number | "auto" | "fill"Chiều rộng tính bằng point, tự động hoặc lấp đầy khung cha.
"fill"height?number | "auto" | "fill"Chiều cao tính bằng point, tự động hoặc lấp đầy khung cha.
"fill"x?numberDịch chuyển hiển thị theo điểm: x sang phải, y xuống dưới; không đổi chỗ trong bố cục.
0y?numberDịch chuyển hiển thị theo điểm: x sang phải, y xuống dưới; không đổi chỗ trong bố cục.
0transform?ViewTransformBiến đổi toàn View không đổi bố cục. Dịch chuyển theo điểm, xoay/nghiêng theo độ, tỷ lệ 1 giữ nguyên, điểm neo 0–1.
{rotation: 0}opacity?numberĐộ đục toàn bộ View: 0 trong suốt, 1 đục hoàn toàn.
1clipped?booleanCắt phần vẽ vượt ra ngoài View.
falseclip?"rectangle" | "ellipse"Hình cắt rectangle hoặc ellipse; Material còn nhận false để tắt.
"rectangle"mask?View | nullView mặt nạ alpha. Căn giữa mà không ảnh hưởng bố cục; null tắt mặt nạ.
<Circle width="fill" height="fill" background="white"/>zIndex?numberThứ tự vẽ giữa các phần tử cùng cấp; giá trị lớn nằm trước.
0blur?numberBán kính làm mờ theo điểm; 0 là tắt.
4innerShadow?DrawingEffectMàu, độ đục, bán kính mờ và độ lệch x/y của hiệu ứng; khoảng cách theo điểm.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectMàu, độ đục, bán kính mờ và độ lệch x/y của hiệu ứng; khoảng cách theo điểm.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorMàu bóng đổ bên ngoài.
HDR("black")shadowOpacity?numberĐộ đục bóng 0–1; 0 ẩn bóng.
0shadowRadius?numberBán kính làm mờ bóng ngoài theo điểm.
4shadowX?numberĐộ lệch bóng theo điểm: x sang phải, y xuống.
0shadowY?numberĐộ lệch bóng theo điểm: x sang phải, y xuống.
2animations?Animation[]Hoạt ảnh khi thuộc tính đổi. duration/delay theo giây; from/to là đầu cuối; repeat/autoreverse điều khiển lặp, wrap là chu kỳ.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberĐịnh danh ổn định giữa các phần tử cùng cấp.
Ví dụ kết hợp
function main() {
return (
<HStack spacing={12}>
<Polyline
width={100}
height={80}
points={[
{ x: 0, y: 70 },
{ x: 50, y: 10 },
{ x: 100, y: 70 },
]}
closed={false}
background="#30B3A244"
stroke={$env.accent}
/>
<Polyline
width={100}
height={80}
points={[
{ x: 0, y: 70 },
{ x: 50, y: 10 },
{ x: 100, y: 70 },
]}
closed={true}
background="#30B3A244"
stroke={$env.accent}
/>
</HStack>
);
}
Hoạt ảnh
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYKhi bỏ qua
Bảng ghi hành vi bỏ qua đã kiểm tra từ triển khai; ví dụ không phải mặc định. Muốn kết quả cố định hãy truyền giá trị rõ, kích thước và màu theo ngữ cảnh không phải hằng số.
| Thuộc tính | Khi bỏ qua |
|---|---|
closed | false |
background | "clear" |
lineWidth | 2 |
trimStart | 0 |
trimEnd | 1 |
stroke | HDR($env.dark ? 'white' : 'black') |