实验七 图形、文本和位图

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验七图形、文本和位图

一实验内容

练习第7章的例Ex_Draw,Ex_Icon,Ex_Cursor

二实验步骤

例Ex_Draw课程的成绩分布直方图

1.创建工作文件夹Ex_Draw

2.在View类中添加一个成员函数DrawScore,用于根据成绩来绘制直方图,该函数代码

如下:

void CEx_DrawView::DrawScore(CDC *pDC, float *fScore, int nNum)

{

int nScoreNum[]={0,0,0,0,0};

for(int i=0;i

{

int nSeg=(int)(fScore[i])/10;

int(nSeg<6)

nSeg=5;

if(nSeg==10)

nSeg=9;

nScoreNum[nSeg-5]++;

}

int nSegNum=sizeof(nScoreNum)/sizeof(int);

int nNumMax=nScoreNum[0];

for(i=0;i

{

if(nNumMax

}

CRect rc;

GetClientRect(rc);

rc.DeflateRect(40,40);

int nSegWidth=rc.Width()/nSegNum;

int nSegHeight=rc.Height()/nNumMax;

COLORREF crSeg=RGB(0,0,192);

CBrush brush1(HS_FDIAGONAL,crSeg);

CBrush brush2(HS_BDIAGONAL,crSeg);

CPen pen(PS_INSIDEFRAME,2,crSeg);

CBrush* oldBrush=pDC->SelectObject(&brush1);

CPen *oldPen=pDC->SelectObject(&pen);

CRect rcSeg(rc);

rcSeg.right=rcSeg.left+nSegWidth;

CString strSeg[]={"<60","60-70","70-80","80-90",">=90");

CRect rcStr;

for(i=0;i

{

if(i%2)

pDC->SelectObject(&brush2);

else

pDC->SelectObject(&brush1);

rcSeg.top=rcSeg.bottom-nScoreNum[i]*nSegHeight-2;

pDC->Rectangle(rcSeg);

if(nScoreNum[i]>0)

{

CString str;

str.Format("%d人",nScoreNum[i]);

pDC->DrawText(str,rcSeg,DT_CENTER|DT_VCENTER|DT_STNGLELINE);

}

rcStr=rcSeg;

rcStr.top=rcStr.bottom+2;

rcStr.bottom+=20;

pDC->DrawText(strSeg[i],rcStr,DT_CENTER|DT_VCENTER|DT_STNGLELINE);

rcSeg.OffsetRect(nSegWidth,0);

}

pDC->SelectObject(oldBrush);

pDC->SelectObject(oldPen);

}

3.在CEx_DrawView::OnDraw中添加下列代码:

Float

fScore[]={66,82,79,74,86,82,67,60,45,44,77,98,65,90,66,76,66,62,83,84,97,43,67,57,60,60,71,74, 60,72,81,69,79,91,69,71,81};

DrawScore(pDC,fScore,sizeof(fScore)/sizeof(float));

例Ex_Icon改变应用程序图标

1.创建工作文件夹Ex_Icon

2.新添4个图标资源,通过图像设备选择对话框,选择small为图标的设备类型,按照下图绘制图标

3.为CmainFrame类添加一个成员函数ChangeIcon,用于切换应用程序的图标。该函数代码如下:

void CMainFrame::ChangeIcon(UINT nIconID)

{

HICON hIconNew=AfxGetApp()->LoadIcon(nIconID);

HICON hIconOld=(HICON)GetClassLong(m_hWnd,GCL_HICON);

if(hIconNew!=hIconOld)

{

DestroyIcon(hIconOld);

SetClassLong(m_hWnd,GCL_HICON,(long)hIconNew);

RedrawWindow();

}

}

4.在OnCreate函数最后添加计时器设置代码

SetTimer(1,500,NULL);

5.为CmainFrame类添加WM_TIMER的消息映射函数,并增加下列代码

static int icons[]={IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4};

static int index=0;

ChangeIcon(icons[index]);

index++;

相关文档
最新文档