Ellipse
Vẽ một hình elip hoặc hình cung elip trong một chiều rộng và chiều cao nhất định. Thang hình elip hoặc đường viền trang trí có thể được hình thành bằng góc bắt đầu, góc quét, tô và nét.
Ví dụ
function main() {
return (
<Ellipse
width={180}
height={100}
background="clear"
stroke={$env.accent}
lineWidth={6}
startAngle={0}
sweepAngle={270}
strokePosition="center"
/>
);
}
Cách sử dụng
- Ellipse và Arc dùng cả chiều rộng/cao; bằng nhau mới tròn. Cung một phần không nối vào tâm. background chỉ tô một vòng đầy khép kín.
- Góc tính độ: 0 phải, 90 xuống, sweep dương theo kim đồng hồ. startAngle modulo 360; sweepAngle giới hạn −360…360. 0 không vẽ, ±360 đầy vòng. wrap:360 chỉ cho startAngle.
- background/stroke nhận Color hoặc Gradient. Dùng ba hàm Gradient, vị trí màu/tâm 0–1, bán kính theo điểm. HDR bọc một màu; độ sáng tùy thiết bị và môi trường.
Thuộc tính
startAngle?numberGóc bắt đầu tính bằng độ, lấy phần dư theo 360 khi lấy mẫu.
0sweepAngle?numberGóc quét tính bằng độ, giới hạn ở -360…360 khi lấy mẫu. Giá trị dương theo chiều kim đồng hồ; không hỗ trợ wrap.
360background?PaintMàu tô hình tròn hoặc elip đầy đủ và khép kín. Bỏ qua với cung không trọn.
HDR($env.dark ? "white" : "black")stroke?PaintMàu hoặc chuyển màu của nét; clear ẩn nét.
"clear"lineWidth?numberĐộ dày nét theo điểm; 0 không vẽ nét.
2strokePosition?"inside" | "center" | "outside"Vị trí nét so với đường bao hình tròn hoặc elip đầy đủ. Mặc định là inside.
"inside"lineCap?"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"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.
0Thuộ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?EllipseAnimation[]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 (
<VStack spacing={12}>
<Ellipse width={180} height={80} background={$env.accent} />
<Ellipse
width={180}
height={80}
background="clear"
stroke={$env.accent}
lineWidth={6}
startAngle={180}
sweepAngle={180}
/>
</VStack>
);
}
Hoạt ảnh
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYdashPhasestrokelineWidthstartAnglesweepAngletransform.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 |
|---|---|
startAngle | 0 |
sweepAngle | 360 |
lineWidth | 2 |
strokePosition | "inside" |
background | HDR($env.dark ? 'white' : 'black') |