上节课我们已经对CChart在C#中的应用进行了详细介绍,相信大家都已经掌握了。
这节课呢,我们对这个问题再复习一下。
虽然是复习,那也不能简单重复啊,我们就利用CChart在C#里面画一个等高线图好了。
画等高线图时,需要提供一个场函数。C++的场函数是一个函数指针。C#里面,没有函数指针了,但可以利用委托来实现函数指针的功能,这就是这一课唯一的知识点了。
第一步,仿照上一课建立一个C#项目,名字是LessonA23,并添加Chart_CSharp.cs文件。
第二步,建立一个场函数,和一个委托。
public static double myFieldFunction(double x, double y)
{
return 1.0 / ((x - 1.0) * (x - 1.0) + y * y + 1.0);
}
ChartAncestor.DelegateFieldFunction func = new ChartAncestor.DelegateFieldFunction(myFieldFunction);
这里,DelegateFieldFunction是笨笨在ChartAncestor里面定义的,直接拿来用就可以了。
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate double DelegateFieldFunction(double a, double b);
第三步,通过Form1的属性对话框,添加Load行为。
private void Form1_Load(object sender, EventArgs e)
{
chart = new ContourChart(this.Handle);
chart.SetFieldFunction(func);
chart.SetPlotRange(-3.0, 3.0, -3.0, 3.0);
chart.SetContourLineNum(25);
chart.SetContourPrecision(6);
chart.SetTitle("测试C#等高线图");
}
第四步,通过Form1的属性对话框,添加布局操作Resize。
private void Form1_Resize(object sender, EventArgs e)
{
chart.ReDraw();
}
终于完成了!
C#之旅返程了!