C#Windows窗体界面设计_01_绘制三角函数_五点作图法
来源:互联网 发布:macair怎么卸载软件 编辑:程序博客网 时间:2024/05/22 04:34
binzhouweichao@163.com
Visual Stutio 2010 C#开发环境
五点作图绘制三角函数,以正弦函数为例,选取一个周期[0, 2π]上的五个特殊的点,也就是横坐标0, π/2, π, 3π/2, 2π这五个点绘制图形,对应的纵坐标为0, 1, 0, -1, 0。
1. 新建Windows窗体应用程序
文件-->新建-->项目,选择Windows窗体应用程序,项目位置和名称自定义。
2. 更改设计文件名称
在右侧解决方案资源管理器中,将默认的Form1.cs改为TriPaint.cs,在弹出的警示框中点击确定。
3.窗体属性设置
设置窗体显示的名称为TriPaint。
选中TriPaint.cs[设计]文件中的Form1窗体,右键-->属性,在右下角弹出的属性窗口中,找到Text属性,将其值修改为TriPaint。
可以看到,上方的Size属性为300, 300,即默认窗口大小为300*300。
这里的其他属性先不做修改。
4. 查看代码
在资源管理器中选中TriPaint.cs,右键-->查看代码。
5. 完善代码
出于简单考虑,只在TriPaint类的构造函数中进行,也就是public TriPaint()函数中添加其他代码。
5.1 建立五个点的数据
使用Point类型写入5个点的数据。Point是System.Drawing中的类,其基本的结构就是点坐标,包含X和Y两个数据。
声明点坐标数组:
Point[] data = new Point[5];//声明一个Point数组data,共5个元素,每个元素为一个Point类型数据。
初始化各点:
注:窗体上的坐标系是以左上角为原点,右方正向为x正方向,下方正向为y正方向。窗体默认大小为300*300,不妨设一个周期2π对应在窗体上的长度为200,即放大倍数为200/2π = 100/π,这样可得五个点的横坐标映射关系为:
设置一个放大倍数变量,方便计算:
double times = 200 / 2 / Math.PI;//放大倍数
由于窗体坐标系只有正的坐标点,需要将Y平移,不妨令最高点为0,有
即向正方向平移100/π。
注:由于Point中,坐标点为int类型,而sin函数或者π为double类型,所以不可避免的要强制类型转换,将double转换成int。而强制类型转换不可避免的会丢失小数点后面的数据。所以在计算sin()函数值时,最好不要使用data.X。但这里data.X的转换前的数据均为整数,与double转换时不会丢失数据,所以可以直接用。。
类型转换:http://blog.csdn.net/sduweichao/article/details/12677357
使用for循环赋值:
for (int i = 0; i < data.Length; i++) { data[i].X = (int)(i * Math.PI / 2 * times);//强制类型转换,将double转为int,可能会丢失数据 data[i].Y = (int)(times * Math.Sin(data[i].X / times) + times * 1); }
5.2 建立画板与画笔
建立画板:
Graphics g = this.CreateGraphics();
通过Graphics类,在当前窗体上建立画板,this指针是当前类的隐藏指针,也就是此类所指的窗体的指针。
窗体属性默认隐藏,需要显示:
this.Show();//显示
建立画笔:
Pen p = new Pen(Color.Blue, 1);
通过Pen类建立画笔,属性为蓝色,线条粗细为1。
5.3 开始绘图
由于是五点绘图,就是把这五个点用直线连接起来,使用DrawLines()函数,函数的参数为画笔和点坐标数组。
g.DrawLines(p, data);//五点绘图,直线连接
按F5运行
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(); //在这里添加代码 Point[] data = new Point[5];//声明一个Point数组data,共5个元素,每个元素为一个Point类型数据。 double times = 200 / 2 / Math.PI;//放大倍数 for (int i = 0; i < data.Length; i++) { data[i].X = (int)(i * Math.PI / 2 * times);//强制类型转换,将double转为int,可能会丢失数据 data[i].Y = (int)(times * Math.Sin(data[i].X / times) + times * 1); } Graphics g = this.CreateGraphics();//画板 this.Show();//显示 Pen p = new Pen(Color.Blue, 1);//画笔 g.DrawLines(p, data);//五点绘图,直线连接 } }}
参考:
C#中的数学函数:http://blog.163.com/w_jingli/blog/static/3825536920114303635977/
C#绘图技术:http://wenku.baidu.com/view/9ffdce166edb6f1aff001fd1.html
- C#Windows窗体界面设计_01_绘制三角函数_五点作图法
- C#Windows窗体界面设计_02_绘制三角函数_多点作图法_全局变量思想
- C#Windows窗体界面设计_02_绘制三角函数_多点作图法
- C#Windows窗体界面设计_01_绘制三角函数_附强制类型转换
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_01_绘制坐标轴_修订ParamsForm
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_01_主窗体
- C#Windows窗体界面设计_攻击决策项目_01_系统架构
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_03_绘制雷点
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_02_子窗体
- C#Windows窗体界面设计_攻击决策项目_真实轨迹RealTrack
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_03_设置窗体弹出退出顺序
- C#Windows窗体界面设计_攻击决策项目_02_设计窗体_04_修订主窗体工具栏和状态栏
- C#Windows窗体界面设计_07_多窗体设计
- C#界面设计之窗体绘制
- C#Windows窗体界面设计_攻击决策项目_03_数据绘图_02_修订坐标轴和ParamsForm文本框数据
- 【C语言】绘制三角函数曲线
- C#Windows窗体界面设计_03_坐标系平移 旋转 镜像
- C#Windows窗体界面设计_04_添加PictureBox控件绘图
- WF4.0 基础篇 (十一) Excetpion 异常 与 TerminateWorkflow 结束流程
- Python 专题一 python 使用 MySQL
- QAction
- 编程忠告——给自己
- 黑马程序员-自学笔记-HTML基础
- C#Windows窗体界面设计_01_绘制三角函数_五点作图法
- 链队列小程序
- 黑马程序员-自学笔记-CSS基础
- c中指针的声明识别
- c/c++ 的内存机制
- bank05-2——银行计算利息
- [Android开发常见问题-20] Android 网络通信框架Volley简介(Google IO 2013)
- HTTP协议中Unity3D获取网络图文方式
- TCP与UDP的不同接包处理方式