Polyline
Gambarlah polyline dengan menghubungkan sekumpulan titik secara berurutan. closed dapat menghubungkan titik terakhir dan titik pertama untuk membentuk kontur tertutup, dan memungkinkan pengisian; koordinatnya menggunakan jumlah titik di View saat ini.
Contoh
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}
/>
);
}
Penggunaan
- points tersambung sesuai urutan; kurang dari dua tidak digambar. closed=true menyambung akhir ke awal dan mengizinkan background. Koordinat berupa poin, bukan persen.
- contentAnimation mengubah teks, gambar atau struktur data. interpolate perlu jumlah titik/closed Polyline, urutan Path atau struktur grafik yang cocok. Perubahan struktur diterapkan langsung.
Properti
pointsReadonlyArray<ViewPoint>Koordinat titik lokal dalam satuan poin. Kurang dari dua titik tidak menggambar apa pun.
[{x: 0, y: 20}, {x: 40, y: 0}, {x: 80, y: 40}]closed?booleanHubungkan titik terakhir ke pertama; bentuk tertutup dapat diisi dengan background.
falsebackground?PaintIsian poligaris tertutup. Diabaikan jika closed bernilai false.
"clear"stroke?PaintWarna atau gradasi garis; clear menyembunyikannya.
HDR($env.dark ? "white" : "black")lineWidth?numberKetebalan garis dalam poin; 0 tidak menggambar garis.
2lineCap?"round" | "butt" | "square"Ujung garis: butt memotong, square memanjang persegi, round membulat.
"round"lineJoin?"round" | "miter" | "bevel"Bentuk sambungan garis: miter, round atau bevel.
"round"dash?number[]Panjang garis dan celah bergantian dalam poin; larik kosong membuat garis utuh.
[]dashPhase?numberOffset pola putus-putus dalam poin.
0trimStart?numberBagian jalur terlihat trimStart–trimEnd dalam 0–1. Circle/Ellipse/Arc memakai sudut.
0trimEnd?numberBagian jalur terlihat trimStart–trimEnd dalam 0–1. Circle/Ellipse/Arc memakai sudut.
1contentAnimation?ContentAnimationTransisi konten opsional. interpolate memerlukan jumlah titik dan status penutupan yang sama; jika tidak, konten langsung diperbarui.
{type: "interpolate", duration: 0.25}Properti umum
width?number | "auto" | "fill"Lebar dalam poin, ukuran otomatis, atau memenuhi induk.
"fill"height?number | "auto" | "fill"Tinggi dalam poin, ukuran otomatis, atau memenuhi induk.
"fill"x?numberOffset visual dalam poin: x ke kanan, y ke bawah; ruang tata letak tidak berubah.
0y?numberOffset visual dalam poin: x ke kanan, y ke bawah; ruang tata letak tidak berubah.
0transform?ViewTransformTransformasi seluruh View tanpa mengubah tata letak. Translasi dalam poin, rotasi/kemiringan dalam derajat, skala 1 tetap, jangkar 0–1.
{rotation: 0}opacity?numberOpasitas seluruh View: 0 transparan, 1 buram.
1clipped?booleanPotong gambar yang melewati batas View.
falseclip?"rectangle" | "ellipse"Bentuk potongan rectangle atau ellipse; Material juga menerima false untuk mematikan.
"rectangle"mask?View | nullView masker alfa. Di tengah tanpa memengaruhi tata letak; null menonaktifkan masker.
<Circle width="fill" height="fill" background="white"/>zIndex?numberUrutan gambar antar saudara; nilai lebih besar di depan.
0blur?numberRadius buram dalam poin; 0 menonaktifkan.
4innerShadow?DrawingEffectWarna, opasitas, radius buram dan offset x/y efek; jarak dalam poin.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectWarna, opasitas, radius buram dan offset x/y efek; jarak dalam poin.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorWarna bayangan luar.
HDR("black")shadowOpacity?numberOpasitas bayangan 0–1; 0 menyembunyikannya.
0shadowRadius?numberRadius buram bayangan luar dalam poin.
4shadowX?numberOffset bayangan dalam poin: x ke kanan, y ke bawah.
0shadowY?numberOffset bayangan dalam poin: x ke kanan, y ke bawah.
2animations?Animation[]Animasi perubahan properti. duration/delay dalam detik; from/to adalah ujung; repeat/autoreverse untuk pengulangan, wrap untuk periode.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentitas stabil di antara elemen sejajar.
Contoh praktis
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>
);
}
Animasi
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYJika dihilangkan
Tabel menunjukkan perilaku penghilangan yang diverifikasi dari implementasi; contoh bukan default. Untuk hasil tetap beri nilai eksplisit; ukuran dan warna kontekstual bukan konstanta.
| Properti | Jika dihilangkan |
|---|---|
closed | false |
background | "clear" |
lineWidth | 2 |
trimStart | 0 |
trimEnd | 1 |
stroke | HDR($env.dark ? 'white' : 'black') |