MFC利用Picture控件加载图片和绘制饼图
1、MFC利用picture控件加载图片
(显示图片)
CImage image;
image.Load(_T("./res/tt.png"));
CRect re;
GetDlgItem(IDC_FLY_PNG)->GetClientRect(&re);
image.Draw(GetDlgItem(IDC_FLY_PNG)->GetDC()->m_hDC, re.left, re.top, re.Width(), re.Height());
(显示颜色)
CStatic *pst = (CStatic *)GetDlgItem(IDC_CLOUDE_PNG);//picture控件ID
CRect rc;
pst->GetClientRect(&rc);
pst->GetDC()->FillSolidRect(rc.left,rc.top,rc.Width(),rc.Height(),RGB(240,240,240));
2、MFC利用Picture控件绘制饼图
CWnd *pcwnd = this->GetDlgItem(IDC_PICTURE);//控件ID
CClientDC dc(pcwnd);
CBrush br1(RGB(253,51,67));
CBrush br2(RGB(3,141,216));
SetViewportOrgEx(dc, 160, 140, NULL);
int total = 345;
int partNum = 190;
float about = (float)partNum /total;
int m_Radius = 100;//半径
CRect pieRect(-m_Radius, -m_Radius, m_Radius, m_Radius);
int angle = about * 360; //计算占的角度
POINT start;
start.x = m_Radius;
start.y = 0;
POINT end;
end.x = int(m_Radius*cos(angle * 3.14 / 180));
end.y = int(-m_Radius*sin(angle * 3.14 / 180));
dc.SelectObject(&br1); //上颜色
dc.Pie(&pieRect,start,end);
CString str1;
str1.Format(TEXT("%0.2f%s"), about*100,TEXT("%"));
start = end;
int angle1 = ((total - m_itmp)/total) *360;
end.x = int(m_Radius*cos(angle1 * 3.14 / 180));
end.y = int(-m_Radius*sin(angle1 * 3.14 / 180));
dc.SelectObject(&br2);
dc.Pie(&pieRect,start,end);
CRect expRect;
int m_expW =60,m_expH =30; //小矩形的大小
int l = 0, t = 0;
for (int i = 0; i < 2; i++)
{
l = 80 + 50 +30;
t = -2*80 + m_expH*i +30;
if (i==0)
{
dc.SelectObject(&br1); //上颜色
}
else
{
dc.SelectObject(&br2); //上颜色
}
dc.Rectangle(l,t + 10,l + m_expW,t + m_expH);
if (i==0)
{
dc.TextOut(l + m_expW + 10, t + m_expH / 3,_T("FEN"));
dc.TextOut(l + m_expW + 50, t + m_expH / 3,str1);
}
else
{
dc.TextOut(l + m_expW + 10, t + m_expH / 3,_T("QITA"));
}
}