日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

图解VC++绘制数学曲线

發(fā)布時(shí)間:2025/4/14 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解VC++绘制数学曲线 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

工具:

http://blog.csdn.net/bcbobo21cn/article/details/44200205

demo工程:

http://pan.baidu.com/s/1kVEkDnT

?

1 新建單文檔MFC exe 工程

?

2 添加菜單和菜單的消息處理函數(shù)

?

?

3 按下圖代碼運(yùn)行,啥也沒(méi)畫(huà)出來(lái);

下斷點(diǎn)檢查y的值,其值一直是-100,不會(huì)變;

因?yàn)閞adian定義為了int,重新定義為double,好了;另外還要把pDC->MoveTo()移動(dòng)到循環(huán)之外;

?

4 添加四個(gè)菜單

?

5 主要代碼

視類(lèi)頭文件添加

private:
int qvtype;
int w,h; ?//存儲(chǔ)窗口寬和高
int w2,h2; ?//存儲(chǔ)窗口寬和高的一半

?

視類(lèi)預(yù)定義

#define PI 3.14159265359

?

菜單消息處理函數(shù)

void CMathqv1View::OnMenuitem32771()?
{
// TODO: Add your command handler code here
qvtype=1;
Invalidate();
}


void CMathqv1View::OnMenuitem32772()?
{
// TODO: Add your command handler code here
qvtype=2;
Invalidate();
}


void CMathqv1View::OnMenuitem32773()?
{
// TODO: Add your command handler code here
qvtype=3;
Invalidate();
}


void CMathqv1View::OnMenuitem32774()?
{
// TODO: Add your command handler code here
qvtype=4;
Invalidate();
}

?

視類(lèi)OnDraw函數(shù)

void CMathqv1View::OnDraw(CDC* pDC)
{
CMathqv1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int x=0,y=0;
double radian;
CPen pen(PS_SOLID,1,RGB(255,0,0));//構(gòu)造畫(huà)筆對(duì)象
CPen *pOldPen;
pOldPen=pDC->SelectObject(&pen);

RECT rect1;
GetClientRect(&rect1);
w=rect1.right;
h=rect1.bottom;
w2=rect1.right/2;
h2=rect1.bottom/2;

switch(qvtype)
{
case 1: // 正弦
pDC->MoveTo((int)x,(int)h2);
for(x=0;x<w;x++)
{
? //弧度=X坐標(biāo)/曲線(xiàn)寬度*角系數(shù)*π
? //Y坐標(biāo)=振幅*曲線(xiàn)寬度*sin(弧度)
? radian =x/((double)60*2)*PI;
? y=sin(radian)*2*60; ??
? pDC->LineTo(x,y+h2);
}
break;
case 2: // 余弦
pDC->MoveTo((int)x,(int)h2+120);
for(x=0;x<w;x++)
{
? radian =x/((double)60*2)*PI;
? y=cos(radian)*2*60; ??
? pDC->LineTo(x,y+h2);
}
break;
case 3: // 正切
pDC->MoveTo((int)x,(int)h2);
for(x=0;x<w;x++)
{
? radian =x/((double)60*2)*PI;
? y=tan(radian)*2*60; ??
? pDC->LineTo(x,y+h2);
}


break;
case 4: // 反正弦
pDC->MoveTo((int)x,(int)h2);
for(x=0;x<w;x++)
{
? radian =x/((double)60*2);
? y=asin(radian)*2*60; ??
? pDC->LineTo(x,y+h2);
}

break;

}

pDC->SelectObject(pOldPen);//恢復(fù)先前的畫(huà)筆
}

?

6 效果

正弦

?

余弦

?

正切

?

反正弦,碉堡了;畫(huà)出一個(gè)如下錯(cuò)誤曲線(xiàn);反正弦記不清了;看來(lái)還要再上一下初中;

?

變更背景為黑色見(jiàn)

http://blog.csdn.net/bcbobo21cn/article/details/50957548

?

總結(jié)

以上是生活随笔為你收集整理的图解VC++绘制数学曲线的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。