Skip to content

主題定制

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 欄位參考

欄位類型說明
bgColor畫布 / 圖表背景色
surfaceColor表面顏色(標籤、分隔線)
gridColor網格線顏色
textColor主要文字顏色
text_dimColor次要 / 暗淡文字顏色
bullColor陽線(上漲)K 線顏色
bearColor陰線(下跌)K 線顏色
crosshair_lineColor十字線顏色
bull_textColor陽線 OHLC 數值文字顏色
bear_textColor陰線 OHLC 數值文字顏色
highlightColor高亮(選中)K 線邊框顏色
legend_bgColor圖例 / 標籤文字行的半透明背景色
selection_handleColor選中標注、plot 等圖表元素時控制點圓點的描邊(邊框)顏色
selection_handle_bgColor選中控制點圓點的填充(背景)顏色
last_price_lineStroke最後一根 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 = 完全不透明)。

基於 MIT 許可證發佈。