C# 中的 ZedGraph:未显示任何点
我正在尝试 Windows 形式的 ZedGraph。我导入了 dll,它成功地显示在 UI 设计器中。当我编译并运行程序时。它会弹出 zedgrah 烧烤视图,但上面没有任何点。谁能帮我看看出了什么问题?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ZedGraph;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void zedGraphControl1_Load(object sender, EventArgs e)
{
CreateChart(zedGraphControl1);
}
public void CreateChart(ZedGraphControl zgc)
{
GraphPane myPane = zgc.GraphPane;
// Set the title and axis labels
myPane.Title.Text = "Line Graph with Band Demo";
myPane.XAxis.Title.Text = "Sequence";
myPane.YAxis.Title.Text = "Temperature, C";
// Enter some random data values
double[] y = { 100, 115, 75, 22, 98, 40, 10 };
double[] y2 = { 90, 100, 95, 35, 80, 35, 35 };
double[] y3 = { 80, 110, 65, 15, 54, 67, 18 };
double[] x = { 100, 200, 300, 400, 500, 600, 700 };
// Fill the axis background with a color gradient
myPane.Chart.Fill = new Fill(Color.FromArgb(255, 255, 245), Color.FromArgb(255, 255, 190), 90F);
// Generate a red curve with "Curve 1" in the legend
LineItem myCurve = myPane.AddCurve("Curve 1", x, y, Color.Red);
// Make the symbols opaque by filling them with white
myCurve.Symbol.Fill = new Fill(Color.White);
// Generate a blue curve with "Curve 2" in the legend
myCurve = myPane.AddCurve("Curve 2", x, y2, Color.Blue);
// Make the symbols opaque by filling them with white
myCurve.Symbol.Fill = new Fill(Color.White);
// Generate a green curve with "Curve 3" in the legend
myCurve = myPane.AddCurve("Curve 3", x, y3, Color.Green);
// Make the symbols opaque by filling them with white
myCurve.Symbol.Fill = new Fill(Color.White);
// Manually set the x axis range
myPane.XAxis.Scale.Min = 0;
myPane.XAxis.Scale.Max = 800;
// Display the Y axis grid lines
myPane.YAxis.MajorGrid.IsVisible = true;
myPane.YAxis.MinorGrid.IsVisible = true;
// Draw a box item to highlight a value range
BoxObj box = new BoxObj(0, 100, 1, 30, Color.Empty,
Color.FromArgb(150, Color.LightGreen));
box.Fill = new Fill(Color.White, Color.FromArgb(200, Color.LightGreen), 45.0F);
// Use the BehindAxis zorder to draw the highlight beneath the grid lines
box.ZOrder = ZOrder.E_BehindCurves;
// Make sure that the boxObj does not extend outside the chart rect if the chart is zoomed
box.IsClippedToChartRect = true;
// Use a hybrid coordinate system so the X axis always covers the full x range
// from chart fraction 0.0 to 1.0
box.Location.CoordinateFrame = CoordType.XChartFractionYScale;
myPane.GraphObjList.Add(box);
// Add a text item to label the highlighted range
TextObj text = new TextObj("Optimal\nRange", 0.95f, 85, CoordType.AxisXYScale,
AlignH.Right, AlignV.Center);
text.FontSpec.Fill.IsVisible = false;
text.FontSpec.Border.IsVisible = false;
text.FontSpec.IsBold = true;
text.FontSpec.IsItalic = true;
text.Location.CoordinateFrame = CoordType.XChartFractionYScale;
text.IsClippedToChartRect = true;
myPane.GraphObjList.Add(text);
// Fill the pane background with a gradient
myPane.Fill = new Fill(Color.WhiteSmoke, Color.Lavender, 0F);
// Calculate the Axis Scale Ranges
zgc.AxisChange();
}
}
}
i am trying ZedGraph in windows form. i imported the dll and it shows in UI designer successfully. when i compile and run the program. it pops up the zedgrah grilled view, but no points on it. could anyone help me see what was wrong?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ZedGraph;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void zedGraphControl1_Load(object sender, EventArgs e)
{
CreateChart(zedGraphControl1);
}
public void CreateChart(ZedGraphControl zgc)
{
GraphPane myPane = zgc.GraphPane;
// Set the title and axis labels
myPane.Title.Text = "Line Graph with Band Demo";
myPane.XAxis.Title.Text = "Sequence";
myPane.YAxis.Title.Text = "Temperature, C";
// Enter some random data values
double[] y = { 100, 115, 75, 22, 98, 40, 10 };
double[] y2 = { 90, 100, 95, 35, 80, 35, 35 };
double[] y3 = { 80, 110, 65, 15, 54, 67, 18 };
double[] x = { 100, 200, 300, 400, 500, 600, 700 };
// Fill the axis background with a color gradient
myPane.Chart.Fill = new Fill(Color.FromArgb(255, 255, 245), Color.FromArgb(255, 255, 190), 90F);
// Generate a red curve with "Curve 1" in the legend
LineItem myCurve = myPane.AddCurve("Curve 1", x, y, Color.Red);
// Make the symbols opaque by filling them with white
myCurve.Symbol.Fill = new Fill(Color.White);
// Generate a blue curve with "Curve 2" in the legend
myCurve = myPane.AddCurve("Curve 2", x, y2, Color.Blue);
// Make the symbols opaque by filling them with white
myCurve.Symbol.Fill = new Fill(Color.White);
// Generate a green curve with "Curve 3" in the legend
myCurve = myPane.AddCurve("Curve 3", x, y3, Color.Green);
// Make the symbols opaque by filling them with white
myCurve.Symbol.Fill = new Fill(Color.White);
// Manually set the x axis range
myPane.XAxis.Scale.Min = 0;
myPane.XAxis.Scale.Max = 800;
// Display the Y axis grid lines
myPane.YAxis.MajorGrid.IsVisible = true;
myPane.YAxis.MinorGrid.IsVisible = true;
// Draw a box item to highlight a value range
BoxObj box = new BoxObj(0, 100, 1, 30, Color.Empty,
Color.FromArgb(150, Color.LightGreen));
box.Fill = new Fill(Color.White, Color.FromArgb(200, Color.LightGreen), 45.0F);
// Use the BehindAxis zorder to draw the highlight beneath the grid lines
box.ZOrder = ZOrder.E_BehindCurves;
// Make sure that the boxObj does not extend outside the chart rect if the chart is zoomed
box.IsClippedToChartRect = true;
// Use a hybrid coordinate system so the X axis always covers the full x range
// from chart fraction 0.0 to 1.0
box.Location.CoordinateFrame = CoordType.XChartFractionYScale;
myPane.GraphObjList.Add(box);
// Add a text item to label the highlighted range
TextObj text = new TextObj("Optimal\nRange", 0.95f, 85, CoordType.AxisXYScale,
AlignH.Right, AlignV.Center);
text.FontSpec.Fill.IsVisible = false;
text.FontSpec.Border.IsVisible = false;
text.FontSpec.IsBold = true;
text.FontSpec.IsItalic = true;
text.Location.CoordinateFrame = CoordType.XChartFractionYScale;
text.IsClippedToChartRect = true;
myPane.GraphObjList.Add(text);
// Fill the pane background with a gradient
myPane.Fill = new Fill(Color.WhiteSmoke, Color.Lavender, 0F);
// Calculate the Axis Scale Ranges
zgc.AxisChange();
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试将 CreateChart 方法调用移至其他位置(例如 Form_Load 而不是 zedGraphControl1_Load)
Try moving the CreateChart method call somewhere else (for example Form_Load instead of zedGraphControl1_Load)