簡體   English   中英

使用Mschart C#的極坐標圖

[英]Polar Plot with mschart C#

我目前正在從事一個項目,在該項目中,我需要使用動態生成的數據創建一個極坐標圖。 我已經設法創建了一個相當不錯的極地圖,但是無法創建所需的極地圖。 這是我的極地圖

這是我用來在中間設置偏移量的代碼:

    public Form1()
    {
        InitializeComponent();
        chart1.ChartAreas[0].AxisX.MajorTickMark.Enabled = false;
        chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false;


        chart1.ChartAreas[0].AxisY.Minimum = -20;
        chart1.ChartAreas[0].AxisY.MajorGrid.IntervalOffset = 15;
        chart1.ChartAreas[0].AxisY.MajorGrid.Interval = 5;
        chart1.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Solid;
        chart1.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Solid;

    }

我在這里找到了一些幫助: 如何在極性Mschart上移動Y軸的原點?

我有一個示例說明如何嘗試獲得極地: 完成的示例

我認為您無法讓軸從最小的軸開始。

(鏈接的帖子僅使標簽以不同的值開頭。)

因此,我們將需要幫助進行一些所有者繪圖。

一些簡短的參考:

var ca = chart1.ChartAreas[0];
var ax = ca.AxisX;
var ay = ca.AxisY;

現在讓我們隱藏y軸:

ay.LineWidth = 0;

要繪制從間隔偏移量到最大值的軸部分,我們只需編寫PostPaint事件即可:

private void chart1_PostPaint(object sender, ChartPaintEventArgs e)
{
    // add references..
    ..
    // then use values to calulate pixel coordinates..
    int py1 = (int)ay.ValueToPixelPosition(ay.Minimum + ay.IntervalOffset);
    int py2 = (int)ay.ValueToPixelPosition(ay.Maximum);
    int px  = (int)ax.ValueToPixelPosition(ax.Maximum -  ax.Minimum);

    // blue to make it stand out
    e.ChartGraphics.Graphics.DrawLine(Pens.Blue, px, py1, px, py2);
}

結果:

在此處輸入圖片說明

當然,找到合適的IntervalIntervalOffsetMinimumMaximum值完全取決於您。

更新:如果您想擁有一整套縮短的x軸網格線,則可以進行大量數學運算或使用圖形變換。 和往常一樣,后者要容易得多..:

Graphics g = e.ChartGraphics.Graphics;
int pyc = (int)ay.ValueToPixelPosition(ay.Minimum);  // y-center
for (int i = 0; i < 360 / ax.Interval; i++)
{
    g.TranslateTransform(px, pyc);
    g.RotateTransform((float)(i * ax.Interval));
    g.TranslateTransform(-px, -pyc);
    g.DrawLine(Pens.colorOfYourChoice, px, py1, px, py2);
    g.ResetTransform();
}

設置ax.Interval = 30; 我們得到以下結果:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM