講解.NET環(huán)境下繪制模糊數(shù)學(xué)中隸屬函數(shù)分布圖第5/5頁
更新時(shí)間:2007年11月23日 17:13:15 作者:
整個(gè)源代碼如上。
首先:重載 pictureBox1_Paint 函數(shù)
進(jìn)行畫圖時(shí)思想很簡(jiǎn)單,確定起始位置,結(jié)束位置,本程序中我用System.Drawing.PointF對(duì)象存儲(chǔ)點(diǎn)坐標(biāo)。
使用 e.Graphics.DrawLine(Pens.Black, 坐標(biāo)1, 坐標(biāo)2)進(jìn)行線條的繪制。
下面我將拿繪制正態(tài)分布圖形介紹下:
程序段如下:
以下是引用片段:
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代表圖形放大倍數(shù),數(shù)值越大圖形放大倍數(shù)越大。
interval 代表步進(jìn)刻度,值越小越精確(必須大小0),但速度也越慢
先確定起始坐標(biāo)(x1,y1),再結(jié)合正態(tài)分布在增加一個(gè)步進(jìn)刻度的情況下確定(x2,y2),接下來調(diào)用e.Graphics.DrawLine進(jìn)行畫圖。
最后還有一點(diǎn),由于每次重新畫圖的時(shí)候都要調(diào)用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();
相關(guān)文章
Unity接入百度AI實(shí)現(xiàn)果蔬識(shí)別
本文將介紹如何利用Unity接入百度AI從而實(shí)現(xiàn)果蔬識(shí)別,可以做到識(shí)別近千種水果和蔬菜的名稱,可自定義返回識(shí)別結(jié)果數(shù)。感興趣的小伙伴可以了解一下2022-02-02C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開機(jī)啟動(dòng)的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開機(jī)啟動(dòng)的方法,涉及C#針對(duì)注冊(cè)表的寫入技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09C#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法
下面小編就為大家?guī)硪黄狢#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例
這篇文章主要介紹了C#程序中創(chuàng)建、復(fù)制、移動(dòng)、刪除文件或文件夾的示例,即對(duì)System.IO命名空間中類的運(yùn)用,需要的朋友可以參考下2016-02-02