C#Windows窗体界面设计_02_绘制三角函数_多点作图法_全局变量思想

原创 2013年10月14日 20:09:08

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命名为:

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_绘制三角函数_多点作图法_全局变量思想

binzhouweichao@163.com 2013-10-14 对02多点绘图中的数据,做全局变量处理。 1.给项目添加一个新类 在右侧解决方案资源管理器中,选中项目名称,右键-->添加-->新建...
  • superweichao
  • superweichao
  • 2013年10月14日 20:09
  • 1096

C#Windows窗体界面设计_01_绘制三角函数_五点作图法

binzhouweichao@163.com Visual Stutio 2010 C#开发环境 五点作图绘制三角函数,以正弦函数为例,选取一个周期[0, 2π]上的五个特殊的点,也就是横坐标0, π...
  • superweichao
  • superweichao
  • 2013年10月13日 17:03
  • 1740

用glew,glfw实现的opengl 学习笔记2画一个四方形

本文章是根据教程http://bullteacher.com/5-hello-triangle.html  实现的,在我本地已经正常运行。源码http://download.csdn.net/deta...
  • qq_28637193
  • qq_28637193
  • 2016年09月01日 08:25
  • 1814

C#Windows窗体界面设计_攻击决策项目_03_数据绘图_02_修订坐标轴和ParamsForm文本框数据

Author: binzhouweichao@163.com Copyright (c) 2013, Liu Xiaojian@BIT,  All Rights Reserved. Date: 2...
  • superweichao
  • superweichao
  • 2013年10月25日 21:51
  • 1119

C#Windows窗体界面设计_攻击决策项目_03_数据绘图_01_绘制坐标轴_修订ParamsForm

Author: binzhouweichao@163.com Copyright (c) 2013, Liu Xiaojian@BIT,  All Rights Reserved. Date: 201...
  • superweichao
  • superweichao
  • 2013年10月25日 15:43
  • 1137

C#Windows窗体界面设计_攻击决策项目_03_数据绘图_03_绘制雷点

Author: binzhouweichao@163.com Copyright (c) 2013, Liu Xiaojian@BIT,  All Rights Reserved. Date: 2...
  • superweichao
  • superweichao
  • 2013年10月26日 21:47
  • 882

C#Windows窗体界面设计_攻击决策项目_02_设计窗体_01_主窗体

Author: binzhouweichao@163.com Copyright (c) 2013, Liu Xiaojian@BIT, All Rights Reserved. 建立Window...
  • superweichao
  • superweichao
  • 2013年10月21日 21:47
  • 1141

C#Windows窗体界面设计_05_添加菜单栏 工具栏 状态栏 按钮

binzhouweichao@163.com 2013-10-17 仍然使用上篇的项目。 实现的作用为: 通过菜单栏,或工具栏,或按钮,实现图片框中图像的显示和隐藏。 1. 更改窗体大小 由于添加...
  • superweichao
  • superweichao
  • 2013年10月17日 19:08
  • 4669

C#Windows窗体界面设计_04_添加PictureBox控件绘图

binzhouweichao@163.com 2013-10-16 参考:http://zhidao.baidu.com/link?url=IEnZ3QgP0rWzS-mTLTAmY4PiM9ms...
  • superweichao
  • superweichao
  • 2013年10月16日 20:44
  • 2413

C#Windows窗体界面设计_攻击决策项目_真实轨迹RealTrack

Author: binzhouweichao@163.com Date: 2013-10-29 参考: http://www.cnblogs.com/OpenCoder/archive/...
  • superweichao
  • superweichao
  • 2013年10月29日 17:25
  • 808
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#Windows窗体界面设计_02_绘制三角函数_多点作图法_全局变量思想
举报原因:
原因补充:

(最多只允许输入30个字)