19,468
社区成员
发帖
与我相关
我的任务
分享
void CfangzhenDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
CString str;
//强制更新绘图, 不可少, 否则绘图会出错
pWnd->Invalidate(); //使static控件的区域无效
pWnd->UpdateWindow();//更新窗口, 此时才真正向系统发送重绘消息
CDC *pDC = pWnd->GetDC(); //获取控件的CDC指针
pDC->Rectangle(0, 390, 700, 0); //画一个矩形框
CPen *pPenRed = new CPen(); //创建画笔对象
pPenRed ->CreatePen(PS_SOLID, 1, RGB(128, 128, 128)); //黑色画笔
CPen *pPen = NULL;
//选中当前红色画笔,并保存以前的画笔
CGdiObject *pOldPen = pDC ->SelectObject(pPenRed);
pDC ->MoveTo(20, 20); //绘制坐标轴
pDC ->LineTo(20, 360); //竖起轴
pDC ->LineTo(690, 360); //水平轴
//写X轴刻度值
for(int i = 0; i <= 25; i ++)
{
str.Format(_T("%d"), i);
pDC ->TextOut(17 + 25 * i, 365, str);
//绘制X轴刻度
pDC ->MoveTo(i * 25 + 20, 360);
pDC ->LineTo(i * 25 + 20, 355);
}
pDC ->TextOut(680,365,_T("t/s"));
//写Y轴刻度值
for(int i = 1; i <= 10; i ++)
{
str.Format(_T("%d"), i);
pDC ->TextOut(2, 360 - 30 * i - 5, str);
//绘制Y轴刻度
pDC ->MoveTo(25, 360 - 30 * i);
pDC ->LineTo(20, 360 - 30 * i);
}
//绘制X箭头
pDC ->MoveTo(680, 357);
pDC ->LineTo(690, 360);
pDC ->LineTo(680, 363);
//绘制Y箭头
pDC ->MoveTo(17, 30);
pDC ->LineTo(20, 20); //绘制左边箭头
pDC ->LineTo(23, 30); //绘制右边箭头
pDC ->SelectObject(pOldPen);//恢复以前的画笔
delete pPenRed;
if(pPen != NULL)
delete pPen;
ReleaseDC(pDC);
}
//强制更新绘图, 不可少, 否则绘图会出错
pWnd->Invalidate(); //使static控件的区域无效
pWnd->UpdateWindow();//更新窗口, 此时才真正向系统发送重绘消息
还是这个?
FILE *fp=0;
fopen_s(&fp,"e:\\input.txt","r");
for(int i=0;i<625;i++)
{
for(int j=0;j<9;j++)
{
fscanf_s(fp,"%lf",&(input[i][j]),40);
}
}
fclose(fp);
void CfangzhenDlg::OnTimer(UINT_PTR nIDEvent)
{
CWnd* pWnd = GetDlgItem(IDC_MYSTATIC);
CDC* pDC = pWnd->GetDC();
//描点
HPEN sRedPen,dRedPen,sGreenPen,dGreenPen,sBluePen,dBluePen,hPenOld;
sRedPen=CreatePen(PS_SOLID,3,RGB(255,0,0));
dRedPen=CreatePen(PS_DASH,3,RGB(255,0,0));
sGreenPen=CreatePen(PS_SOLID,3,RGB(0,255,0));
dGreenPen=CreatePen(PS_DASH,3,RGB(0,255,0));
sBluePen=CreatePen(PS_SOLID,3,RGB(0,0,255));
dBluePen=CreatePen(PS_DASH,3,RGB(0,0,255));
hPenOld = (HPEN)pDC->SelectObject(sRedPen);
pDC ->MoveTo((T[m]-15)*25+15,360-300*Output[m][0]);
pDC ->LineTo((T[m+1]-15)*25+15,360-300*Output[m+1][0]);//PNP
pDC->SelectObject(hPenOld);
hPenOld = (HPEN)pDC->SelectObject(dRedPen);
pDC ->MoveTo((T[m]-15)*25+15,360-300*Output[m][1]);
pDC ->LineTo((T[m+1]-15)*25+15,360-300*Output[m+1][1]);//PNC
pDC->SelectObject(hPenOld);
hPenOld = (HPEN)pDC->SelectObject(sGreenPen);
pDC ->MoveTo((T[m]-15)*25+15,360-300*Output[m][2]);
pDC ->LineTo((T[m+1]-15)*25+15,360-300*Output[m+1][2]);//HPP
pDC->SelectObject(hPenOld);
hPenOld = (HPEN)pDC->SelectObject(dGreenPen);
pDC ->MoveTo((T[m]-15)*25+15,360-300*Output[m][3]);
pDC ->LineTo((T[m+1]-15)*25+15,360-300*Output[m+1][3]);//SMC
pDC->SelectObject(hPenOld);
hPenOld = (HPEN)pDC->SelectObject(sBluePen);
pDC ->MoveTo((T[m]-15)*25+15,360-300*Output[m][4]);
pDC ->LineTo((T[m+1]-15)*25+15,360-300*Output[m+1][4]);//T45
pDC->SelectObject(hPenOld);
hPenOld = (HPEN)pDC->SelectObject(dBluePen);
pDC ->MoveTo((T[m]-15)*25+15,360-300*Output[m][5]);
pDC ->LineTo((T[m+1]-15)*25+15,360-300*Output[m+1][5]);
pDC->SelectObject(hPenOld);
double s0,s1,s2,s3,s4,s5,s6;
CString S0,S1,S2,S3,S4,S5,S6;
s0=input[m+1][2];
S0.Format(_T("%.4f"),s0);
GetDlgItem(IDC_EDIT1)->SetWindowText(S0);//输出WFB
s1=Output[m+1][0]*mPNP;
S1.Format(_T("%.4f"),s1);
GetDlgItem(IDC_EDIT2)->SetWindowText(S1);//输出PNP
s2=Output[m+1][1]*mPNC;
S2.Format(_T("%.4f"),s2);
GetDlgItem(IDC_EDIT3)->SetWindowText(S2);//输出PNC
s3=Output[m+1][2]*mHPP;
S3.Format(_T("%.4f"),s3);
GetDlgItem(IDC_EDIT4)->SetWindowText(S3);//输出HPP
s4=Output[m+1][3]*mSMC;
S4.Format(_T("%.4f"),s4);
GetDlgItem(IDC_EDIT5)->SetWindowText(S4);//输出SMC
s5=Output[m+1][4]*mT45;
S5.Format(_T("%.4f"),s5);
GetDlgItem(IDC_EDIT6)->SetWindowText(S5);//输出T45
s6=Output[m+1][5]*mP45;
S6.Format(_T("%.4f"),s6);
GetDlgItem(IDC_EDIT7)->SetWindowText(S6);//输出P45
m+=1;
if(m>=625)
{
KillTimer(1);
}// TODO: 在此添加消息处理程序代码和/或调用默认值
CDialogEx::OnTimer(nIDEvent);
}