⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evaluatedlg.cpp

📁 网页分类器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					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 + -