讲解.NET环境下绘制模糊数学中隶属函数分布图
更新时间:2007年11月23日 17:13:15 作者:
整个源代码如上。
首先:重载 pictureBox1_Paint 函数
进行画图时思想很简单,确定起始位置,结束位置,本程序中我用System.Drawing.PointF对象存储点坐标。
使用 e.Graphics.DrawLine(Pens.Black, 坐标1, 坐标2)进行线条的绘制。
下面我将拿绘制正态分布图形介绍下:
程序段如下:
以下是引用片段:
for (d = a; d <= 2 * a; d += interval)
{
x1 = o.X + d * unit;
x2 = o.X + (d + interval) * unit;
y1 = o.Y - (float)(System.Math.Exp(-((d - a) / k) * ((d - a) / k)) * unit);
y2 = o.Y - (float)(1-System.Math.Exp(-((d - interval - a) / k) * ((d - interval - a) / k)) * unit);
p1 = new PointF(x1, y1);
p2 = new PointF(x2, y2);
e.Graphics.DrawLine(Pens.Blue, p1, p2);
}
其中:unit代表图形放大倍数,数值越大图形放大倍数越大。
interval 代表步进刻度,值越小越精确(必须大小0),但速度也越慢
先确定起始坐标(x1,y1),再结合正态分布在增加一个步进刻度的情况下确定(x2,y2),接下来调用e.Graphics.DrawLine进行画图。
最后还有一点,由于每次重新画图的时候都要调用private void pictureBox1_Paint(object sender, PaintEventArgs e),其不是用户定义方法,所以用户句柄重新获取PictureBox_Paint方法,重新绘制图形,代码段如下:
以下是引用片段:
Graphics g = Graphics.FromHwnd(this.pictureBox1.Handle);
PaintEventArgs e1 = new PaintEventArgs(g, this.pictureBox1.ClientRectangle);
this.pictureBox1_Paint(this.pictureBox1, e1);
g.Dispose();
相关文章
C#中static void Main(string[] args) 参数示例详解
这篇文章主要介绍了C#中static void Main(string[] args) 参数详解,本文通过具体示例给大家介绍的非常详细,需要的朋友可以参考下2017-03-03C# 使用Microsoft Edge WebView2的相关总结
这篇文章主要介绍了C# 使用Microsoft Edge WebView2的相关总结,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下2021-02-02在C#中List集合使用First()方法获取第一个元素的操作
这篇文章主要介绍了在C#中List集合使用First()方法获取第一个元素的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-12-12
最新评论