📄 evaluatedlg.cpp
字号:
dPrecision[3]=(double)nRight[3] / nTotal[3];//查准率
m_strRightCom.Format("%.3lf", dPrecision[3]* 100);
m_strRightCom += '%';
}
else
{
m_strRightCom = "没有此类";
}
m_proRecallCom.SetRange(0,nTotalTest[3]);
m_proRecallCom.SetPos(nRight[3]);
m_proRecallCom.SendMessage( PBM_SETBARCOLOR, 0, RGB(230,75,15));
if( nTotalTest[3] != 0 )
{
dRecall[3]=(double)nRight[3] / nTotalTest[3];//查全率
m_strRecallCom.Format("%.3lf",dRecall[3] * 100);
m_strRecallCom += '%';
}
else
{
m_strRecallCom = "没有此类";
}
//F1测试值
dF1[3]=(dPrecision[3]*dRecall[3]*2) / (dPrecision[3]+dRecall[3]);
sum+=dF1[3];
m_strComF1.Format("%.3lf",dF1[3]);
}
}
dMacroF1=sum/KINDNUMBER;
m_strMacroF1="Macro_F1=";
CString str;
str.Format("%.3lf",dMacroF1);
m_strMacroF1+=str;
UpdateData(FALSE);
ar.Close();
}
mFile.Close();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/********************************************************************
// 创建日期 : 2008-5-19 17:17:53
// 作 者 : 祝美莲<zml123818@163.com>
// 函数名称 : CEvaluateDlg::OnPaint
// 函数功能 : 在对话框中画图,柱状图和折线图
// 返回类型 : void
********************************************************************/
void CEvaluateDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
//定义画笔画刷字体
HPEN hP;
HBRUSH hBr;
CFont font;
//定义颜色数组
COLORREF color[4];
color[0]=RGB(220,20,60);
color[1]=RGB(255,0,255);
color[2]=RGB(255,255,0);
color[3]=RGB(0,250,154);
//获得DC
CWnd * pWnd = GetDlgItem(IDC_PICTURE); //IDC_PICTURE specified in the dialog editor
CDC * pDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
//画图
hP=(HPEN)GetStockObject(BLACK_PEN);
hBr=(HBRUSH)GetStockObject(DKGRAY_BRUSH);
font.CreateFont(14,7,0,0,0,FALSE,FALSE,0, ANSI_CHARSET,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,DEFAULT_PITCH | FF_SWISS,"宋体");
pDC->SelectObject(&font);
pDC->SelectObject(hBr);
pDC->SelectObject(hP);
pDC->SetBkMode(TRANSPARENT);
//画坐标系
CPoint point1(20,200);
pDC->MoveTo(point1);
pDC->LineTo(490,point1.y);
pDC->MoveTo(point1);
pDC->LineTo(point1.x,30);
//画箭头
pDC->MoveTo((point1.x-3),33);
pDC->LineTo(point1.x,30);
pDC->MoveTo(point1.x,30);
pDC->LineTo((point1.x+3),33);
pDC->MoveTo(487,(point1.y+3));
pDC->LineTo(490,point1.y);
pDC->MoveTo(487,(point1.y-3));
pDC->LineTo(490,point1.y);
pDC->TextOut(490,205,"类别");
if(bType)//画直方图
{
int i,j,k,l=0;
//画查准率对应的柱状图
for(i=0;i<KINDNUMBER;i++)
{
j=point1.x+10+i*30;
k=j+20;
l=point1.y-dPrecision[i]*150;
hBr=CreateSolidBrush(color[i]);
pDC->SelectObject(hBr);//设置画笔
pDC->Rectangle(j,point1.y,k,l);
CString str;
int m=dPrecision[i]*100+0.5;
str.Format("%d",m);
str = str +"%";
pDC->TextOut(j,(l-15),str);//输出查准率
str.Format("%d",(i+1));
str=str+"类";
pDC->TextOut(j,205,str);//输出类别
}
pDC->TextOut(60,15,"查准率");
//画查全率对应的柱状图
int a = k;
for(i=0;i<KINDNUMBER;i++)
{
j=a+40+i*30;
k=j+20;
l=point1.y-dRecall[i]*150;
hBr=CreateSolidBrush(color[i]);
pDC->SelectObject(hBr);//设置画笔
pDC->Rectangle(j,point1.y,k,l);//画矩形
CString str;
int m=dRecall[i]*100+0.5;
str.Format("%d",m);
str = str +"%";
pDC->TextOut(j,(l-15),str);//输出查全率
str.Format("%d",(i+1));
str=str+"类";
pDC->TextOut(j,205,str);//输出类别
}
pDC->TextOut(210,15,"查全率");
//画F1测试值对应的柱状图
a = k;
for(i=0;i<KINDNUMBER;i++)
{
j=a+40+i*35;
k=j+20;
l=point1.y-dF1[i]*150;
hBr=CreateSolidBrush(color[i]);
pDC->SelectObject(hBr);//设置画笔
pDC->Rectangle(j,point1.y,k,l);
CString str;
str.Format("%.3lf",dF1[i]);
pDC->TextOut((j-10),(l-15),str);//输出F1值
str.Format("%d",(i+1));
str=str+"类";
pDC->TextOut(j,205,str);//输出类别
}
pDC->TextOut(360,15,"F1测试值");
}
else
{
int i,j,l=0;
//画查准率对应的折线图
pDC->MoveTo(point1);
for(i=0;i<KINDNUMBER;i++)
{
j=point1.x+10+i*35;
l=point1.y-dPrecision[i]*150;
hP=CreatePen(PS_SOLID,0,RGB(0,0,255));
hBr=CreateSolidBrush(color[i]);
pDC->SelectObject(hBr);//设置画笔
pDC->SelectObject(hP);
pDC->LineTo(j+10,l);//画线
pDC->Ellipse(j+5,l-5,j+15,l+5);//画点
CString str;
int m=dPrecision[i]*100+0.5;
str.Format("%d",m);
str = str + "%";
pDC->TextOut(j,(l-15),str);//输出查准率
str.Format("%d",(i+1));
str=str+"类";
pDC->TextOut(j+7,205,str);
}
pDC->TextOut(60,15,"查准率");
//画查全率对应的折线图
int a = j+40;
pDC->MoveTo(a,point1.y);//初始点
for(i=0;i<KINDNUMBER;i++)
{
j=a+10+i*35;
l=point1.y-dRecall[i]*150;
hP=CreatePen(PS_SOLID,0,RGB(0,0,255));
hBr=CreateSolidBrush(color[i]);
pDC->SelectObject(hBr);
pDC->SelectObject(hP);//设置画笔
pDC->LineTo(j+10,l);
pDC->Ellipse(j+5,l-5,j+15,l+5);
CString str;
int m=dRecall[i]*100+0.5;
str.Format("%d",m);
str = str + "%";
pDC->TextOut(j,(l-15),str); //输出查全率
str.Format("%d",(i+1));
str=str+"类";
pDC->TextOut(j+7,205,str);
}
pDC->TextOut(210,15,"查全率");
//画F1测试值对应的折线图
a = j+40;
pDC->MoveTo(a,point1.y);
for(i=0;i<KINDNUMBER;i++)
{
j=a+10+i*35;
l=point1.y-dF1[i]*150;
hP=CreatePen(PS_SOLID,0,RGB(0,0,255));
hBr=CreateSolidBrush(color[i]);
pDC->SelectObject(hBr);
pDC->SelectObject(hP);//设置画笔
pDC->LineTo(j+10,l);
pDC->Ellipse(j+5,l-5,j+15,l+5);
CString str;
str.Format("%.3lf",dF1[i]);
pDC->TextOut(j,(l-15),str);//输出F1值
str.Format("%d",(i+1));
str=str+"类";
pDC->TextOut(j+7,205,str);
}
pDC->TextOut(360,15,"F1测试值");
}
pWnd->ReleaseDC(pDC);
// Do not call CDialog::OnPaint() for painting messages
}
/********************************************************************
// 创建日期 : 2008-5-19 17:18:45
// 作 者 : 祝美莲<zml123818@163.com>
// 函数名称 : CEvaluateDlg::OnRect
// 函数功能 : 画柱状图
// 返回类型 : void
********************************************************************/
void CEvaluateDlg::OnRect()
{
// TODO: Add your control notification handler code here
bType=TRUE;//设置标记
this->Invalidate();//调用OnPaint()函数
}
/********************************************************************
// 创建日期 : 2008-5-19 17:18:34
// 作 者 : 祝美莲<zml123818@163.com>
// 函数名称 : CEvaluateDlg::OnCurve
// 函数功能 : 画折线图
// 返回类型 : void
********************************************************************/
void CEvaluateDlg::OnCurve()
{
// TODO: Add your control notification handler code here
bType=FALSE;//设置标记
this->Invalidate();//调用OnPaint()函数
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -