主題定制
ChartView 提供 set_theme 方法,用於控制圖表中的所有顏色——背景、K 線、網格、文字、十字線以及預設繪圖色板。
內置主題
開箱即用提供兩套預設:
rust
use navi_chart::Theme;
let dark = Theme::dark(); // 深色背景,柔和配色
let light = Theme::light(); // 白色背景,鮮明配色在建立後立即應用:
rust
cv.set_theme(Theme::dark());呼叫 set_theme 後圖表會立即重繪。
完全自訂主題
直接構造 Theme 結構體字面量來明確設定每個顏色:
rust
use navi_chart::{Theme, Stroke, LineStyle};
use navi_types::Color;
cv.set_theme(Theme {
bg: Color::from_rgb(18, 18, 18),
surface: Color::from_rgb(30, 30, 30),
grid: Color::from_rgba(255, 255, 255, 26),
text: Color::from_rgb(220, 220, 220),
text_dim: Color::from_rgb(120, 120, 120),
bull: Color::from_rgb(0, 200, 100),
bear: Color::from_rgb(220, 50, 50),
crosshair_line: Color::from_rgba(200, 200, 200, 100),
bull_text: Color::from_rgb(0, 200, 100),
bear_text: Color::from_rgb(220, 50, 50),
highlight: Color::from_rgba(255, 255, 255, 200),
legend_bg: Color::from_rgba(18, 18, 18, 204),
selection_handle: Color::from_rgb(100, 160, 255),
selection_handle_bg: Color::from_rgb(255, 255, 255),
last_price_line: Stroke {
color: Color::from_rgba(120, 120, 140, 180),
width: 1.0,
style: LineStyle::Dashed,
},
plot_colors: [
Color::from_rgb(100, 160, 255),
Color::from_rgb(255, 200, 80),
Color::from_rgb(180, 120, 240),
Color::from_rgb(80, 210, 180),
Color::from_rgb(255, 140, 80),
Color::from_rgb(240, 100, 180),
Color::from_rgb(150, 160, 255),
Color::from_rgb(100, 210, 130),
],
});也可以從預設出發修改個別欄位:
rust
let mut theme = Theme::dark();
theme.bull = Color::from_rgb(0, 230, 118);
theme.bear = Color::from_rgb(255, 82, 82);
cv.set_theme(theme);Theme 欄位參考
| 欄位 | 類型 | 說明 |
|---|---|---|
bg | Color | 畫布 / 圖表背景色 |
surface | Color | 表面顏色(標籤、分隔線) |
grid | Color | 網格線顏色 |
text | Color | 主要文字顏色 |
text_dim | Color | 次要 / 暗淡文字顏色 |
bull | Color | 陽線(上漲)K 線顏色 |
bear | Color | 陰線(下跌)K 線顏色 |
crosshair_line | Color | 十字線顏色 |
bull_text | Color | 陽線 OHLC 數值文字顏色 |
bear_text | Color | 陰線 OHLC 數值文字顏色 |
highlight | Color | 高亮(選中)K 線邊框顏色 |
legend_bg | Color | 圖例 / 標籤文字行的半透明背景色 |
selection_handle | Color | 選中標注、plot 等圖表元素時控制點圓點的描邊(邊框)顏色 |
selection_handle_bg | Color | 選中控制點圓點的填充(背景)顏色 |
last_price_line | Stroke | 最後一根 K 線收盤價處水平線及右軸標籤的樣式(顏色、線寬、虛實)。顯示開關由 set_last_price_line_visible 控制。 |
plot_colors | [Color; 8] | 預設繪圖色板(腳本未指定顏色時循環使用) |
顏色編碼:Color 是 RGBA 格式的緊湊 u32。使用 Color::from_rgb(r, g, b) 表示不透明顏色,使用 Color::from_rgba(r, g, b, a) 表示帶透明度的顏色(alpha 0 = 完全透明,255 = 完全不透明)。