首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 繪製曲線圖與柱狀圖(二):雙序列折線圖實現

     編輯:關於C語言

基於 `Graphics` 繪製雙數據序列折線圖,含標題、圖例、座標軸、數值標籤、自適應縮放。

效果圖

折線圖效果

核心 Render 方法

public Image Render(string title, int width, int height, DataTable chartTable) {
    var bmp = new Bitmap(width, height);
    using (var g = Graphics.FromImage(bmp)) {
        g.Clear(Color.White);
        // 邊界檢查、空數據處理...
        
        // 計算最大值用於縮放
        float maxVal = 1;
        foreach (DataRow dr in chartTable.Rows) {
            maxVal = Math.Max(maxVal, Convert.ToSingle(dr[0]));
            maxVal = Math.Max(maxVal, Convert.ToSingle(dr[1]));
        }

        // 繪製標題、圖例(垂直文字)
        // 繪製數據點、連線、座標軸、刻度標籤...
        
        // 關鍵:兩序列點陣列
        PointF[] pts1 = new PointF[chartTable.Rows.Count];
        PointF[] pts2 = new PointF[chartTable.Rows.Count];
        // 循環計算每個點座標並填充陣列
        // g.DrawLines(new Pen(Color.Red), pts1);
        // g.DrawLines(new Pen(Color.Blue), pts2);
    }
    return bmp;
}

關鍵技術點

  • 數據歸一化:`值 * (繪圖高度) / 最大值`
  • 動態字體大小:根據柱寬/數據位數自適應
  • 刻度稀疏顯示:超過 10 點時每 N 個顯示標籤
  • 垂直文字:`StringFormatFlags.DirectionVertical`

補充

代碼可直接用於 WebForm `Image` 控件輸出或 WinForm `PictureBox` 顯示。轉載請註明出處:半支煙阿傑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved