C#Windows窗体界面设计_02_绘制三角函数_多点作图法_全局变量思想
2013-10-14 20:09
429 查看
binzhouweichao@163.com
2013-10-14
对02多点绘图中的数据,做全局变量处理。
1.给项目添加一个新类
在右侧解决方案资源管理器中,选中项目名称,右键-->添加-->新建项,在弹出的窗口中,选择类,名字改为GlobalVars.cs,也可以进入代码文件修改。
在新添加的GlobalVars.cs中,可以看到基本的空类模版。修改其代码。
2.设置全局变量
参考:http://wenku.baidu.com/view/67c644ea19e8b8f67c1cb947.html
C#没有全局变量。
全局变量的作用就是设置一个作用域,使这个变量在其作用域下均有效。C#中使用静态类来保存一个变量,使其能够实现全局变量的作用。
静态类参考:http://wenku.baidu.com/view/a399f2046c85ec3a87c2c5b7.html
静态类不能声明实例,不能有构造函数。成员方法也是静态的。
首先将类GlobalVars修改为静态类,即把类名class GlobalVars命名为:
在此类的内部声明一系列的常量和变量。调用时通过类名进行引用即可。
由于data变量是Point[]类型,所以要在此类开头加上Point所在的库,即
把原先声明在TriPaint.cs中的几个常量和变量拷入GlobalVars类中,并稍作修改,如下:
对于常量,直接引用即可,比如要引用POINTCNT,则:
对于变量data,除引用外,还可以对其赋值,引用方式如下:
为体现全局变量,更改TriPaint.cs。在其构造函数中,只做变量的赋值,在另一个事件中,引用赋值后的变量做绘图。
3.数据处理
进入TriPaint.cs代码,在其构造函数中,对变量data只进行赋值,如下:
绘图操作放入一个新的事件函数中。
4.对TriPaint.cs添加事件
添加Load事件。
在TriPaint.cs[设计]文件中,选中窗体,双击鼠标左键,就会添加Load事件,并跳转带Load代码中,且事件与代码关联。
这样,在TriPaint.cs中,位于构造函数的下方,会自动生成一个TriPaint_Load函数。
5.绘图
在新添加的Load事件关联的函数中,添加上篇介绍的绘图过程。
这样,更改后的TriPiant.cs如下:
TriPaint.cs
6.结果
与之前的相同。
2013-10-14
对02多点绘图中的数据,做全局变量处理。
1.给项目添加一个新类
在右侧解决方案资源管理器中,选中项目名称,右键-->添加-->新建项,在弹出的窗口中,选择类,名字改为GlobalVars.cs,也可以进入代码文件修改。
在新添加的GlobalVars.cs中,可以看到基本的空类模版。修改其代码。
2.设置全局变量
参考:http://wenku.baidu.com/view/67c644ea19e8b8f67c1cb947.html
C#没有全局变量。
全局变量的作用就是设置一个作用域,使这个变量在其作用域下均有效。C#中使用静态类来保存一个变量,使其能够实现全局变量的作用。
静态类参考:http://wenku.baidu.com/view/a399f2046c85ec3a87c2c5b7.html
静态类不能声明实例,不能有构造函数。成员方法也是静态的。
首先将类GlobalVars修改为静态类,即把类名class GlobalVars命名为:
public static class GlobalVars
在此类的内部声明一系列的常量和变量。调用时通过类名进行引用即可。
由于data变量是Point[]类型,所以要在此类开头加上Point所在的库,即
using System.Drawing;
把原先声明在TriPaint.cs中的几个常量和变量拷入GlobalVars类中,并稍作修改,如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace TriPaint_20131013 { //修改这里 public static class GlobalVars { //类似于#define宏定义,设置三个常量 public const int POINTCNT = 50;//点数,POINTCNT <= XMAX - XMIN public const int XMAX = 200;//X轴最大值,也就是2π对应的值 public const int XMIN = 0;//X轴最小值 public const double times = (XMAX - XMIN) / (2 * Math.PI - 0);//放大倍数 public const double xInterval = (XMAX - XMIN) / (POINTCNT - 1);//i增量对应的data.X增量 //类似于全局变量,可以重新赋值 private static Point[] data = new Point[POINTCNT]; public static Point[] Data { get { return data; } set { data = value; } } } }
对于常量,直接引用即可,比如要引用POINTCNT,则:
GlobalVars.POINTCNT
对于变量data,除引用外,还可以对其赋值,引用方式如下:
Global.Data
为体现全局变量,更改TriPaint.cs。在其构造函数中,只做变量的赋值,在另一个事件中,引用赋值后的变量做绘图。
3.数据处理
进入TriPaint.cs代码,在其构造函数中,对变量data只进行赋值,如下:
for (int i = 0; i < GlobalVars.POINTCNT; i++) { GlobalVars.Data[i].X = (int)(i * GlobalVars.xInterval);//i对应的data.X GlobalVars.Data[i].Y = (int)(GlobalVars.times * Math.Sin(GlobalVars.Data[i].X / GlobalVars.times));//sin函数求值 GlobalVars.Data[i].Y = (int)(GlobalVars.Data[i].Y + GlobalVars.times * 1);//Y轴向正向平移1,即1*times,令最高点(也就是3π/2对应的-1点)的值为0 }
绘图操作放入一个新的事件函数中。
4.对TriPaint.cs添加事件
添加Load事件。
在TriPaint.cs[设计]文件中,选中窗体,双击鼠标左键,就会添加Load事件,并跳转带Load代码中,且事件与代码关联。
这样,在TriPaint.cs中,位于构造函数的下方,会自动生成一个TriPaint_Load函数。
5.绘图
在新添加的Load事件关联的函数中,添加上篇介绍的绘图过程。
private void TriPaint_Load(object sender, EventArgs e) { Graphics g = this.CreateGraphics();//画板 this.Show();//显示 Pen p = new Pen(Color.Blue, 1);//画笔 g.DrawLines(p, GlobalVars.Data);//多点绘图,直线连接 }
这样,更改后的TriPiant.cs如下:
TriPaint.cs
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; namespace TriPaint_20131013 { public partial class TriPaint : Form { public TriPaint() { InitializeComponent(); //在这里添加代码 //对数据进行处理 for (int i = 0; i < GlobalVars.POINTCNT; i++) { GlobalVars.Data[i].X = (int)(i * GlobalVars.xInterval);//i对应的data.X GlobalVars.Data[i].Y = (int)(GlobalVars.times * Math.Sin(GlobalVars.Data[i].X / GlobalVars.times));//sin函数求值 GlobalVars.Data[i].Y = (int)(GlobalVars.Data[i].Y + GlobalVars.times * 1);//Y轴向正向平移1,即1*times,令最高点(也就是3π/2对应的-1点)的值为0 } } private void TriPaint_Load(object sender, EventArgs e) { Graphics g = this.CreateGraphics();//画板 this.Show();//显示 Pen p = new Pen(Color.Blue, 1);//画笔 g.DrawLines(p, GlobalVars.Data);//多点绘图,直线连接 } } }
6.结果
与之前的相同。
相关文章推荐
- C#Windows窗体界面设计_02_绘制三角函数_多点作图法
- C#Windows窗体界面设计_01_绘制三角函数_五点作图法
- C#Windows窗体界面设计_01_绘制三角函数_五点作图法
- C#Windows窗体界面设计_01_绘制三角函数_附强制类型转换
- C#Windows窗体界面设计_01_绘制三角函数_附强制类型转换
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_02_子窗体
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_01_主窗体
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_02_修订坐标轴和ParamsForm文本框数据
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_01_绘制坐标轴_修订ParamsForm
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_04_修订主窗体工具栏和状态栏
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_03_绘制雷点
- C#界面设计之窗体绘制
- C#Windows窗体界面设计_05_自定义函数 外部类访问读写窗体类的控件的私有属性
- 窗体界面设计02
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_03_设置窗体弹出退出顺序
- 1.窗体与界面设计-标题栏窗体
- C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮
- C#实例:5个.net经典例子(窗体与界面设计)
- Matlab GUI,全局变量,单个窗体内各个函数之间传递数据
- Android Studio跨界面全局变量