QQ登录

只需一步,快速开始

140上位机VC MFC绘制动态的背景图

[ 复制链接 ]

140上位机VC MFC绘制动态的背景图

140上位机VC MFC绘制动态的背景图

140上位机VC MFC绘制动态的背景图


功能展示

通过设备上下文CDC绘制动态的背景节省空间的同时,也会吸引用户的眼光,给程序增添色彩,我们当前例程通过一数组动态画线,实现动态的图片,效果如图;
要点提示
根据数组内的坐标点画线,得结合定时器才能够实现动态效果,我们可以触发一个200毫秒的定时器,在定时器内绘制不同坐标的线,就可以实现线的动态效果;





实现功能
1.新建基于对话框的应用程序
2.添加三个变量private: BOOL m_bChangeDisplay; //显示切换 UINT m_PointNum;//数组点数

CPoint m_PointArray[40];//数组 并在对话框的OnInitDialog()函数中初始化
  1. m_PointNum       = 40;
  2.         m_bChangeDisplay = FALSE;
  3.         double       lpi = 0;
  4.         int nX = 140;
  5.         m_PointArray[0]  = CPoint(nX,0);
  6.         for(int i=1;i<m_PointNum;i++)
  7.         {lpi+=(2*PI/m_PointNum);
  8.                 if(lpi<=2*PI/4)
  9.                 {
  10.                         m_PointArray[i] = CPoint(nX+nX*sin(2*i*PI/m_PointNum),nX-nX*cos(2*i*PI/m_PointNum));
  11.                 }
  12.                 if(lpi>2*PI/4 && lpi<=2*PI/2)
  13.                 {
  14.                         m_PointArray[i] = CPoint(nX+nX*sin(PI-2*i*PI/m_PointNum),nX+nX*cos(PI-2*i*PI/m_PointNum));
  15.                 }
  16.                 if(lpi>2*PI/2 && lpi<=2*PI*3/4)
  17.                 {
  18.                         m_PointArray[i] = CPoint(nX-nX*sin(2*i*PI/m_PointNum-2*PI/2),nX+nX*cos(2*i*PI/m_PointNum-2*PI/2));
  19.                 }
  20.                 if(lpi>2*PI*3/4 && lpi<=2*PI)
  21.                 {
  22.                         m_PointArray[i] = CPoint(nX-nX*sin(2*PI-2*i*PI/m_PointNum),nX-nX*cos(2*PI-2*i*PI/m_PointNum));
  23.                 }
  24.         }
  25.         SetTimer(1,150,NULL);
复制代码
  1. 添加定时器处理消息,在里面实现绘制线
  2. void CGkbc8Dlg::OnTimer(UINT nIDEvent)
  3. {
  4.         CRect rc;
  5.         GetClientRect(&rc);
  6.         CDC* pDC = GetDC();
  7.         pDC->FillRect(&rc,CBrush::FromHandle((HBRUSH )GetStockObject(BLACK_BRUSH)));
  8.         CPen pen,*pOldPen;
  9.         pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
  10.         pOldPen=pDC->SelectObject(&pen);
  11.         if(m_bChangeDisplay)
  12.         {
  13.                 for(int j=0;j<m_PointNum;j=j+2)
  14.                 {        
  15.                         for(int k=0;k<=j;k=k+2)
  16.                         {
  17.                                 pDC->MoveTo(m_PointArray[j]);
  18.                                 pDC->LineTo(m_PointArray[k]);
  19.                         }
  20.                 }
  21.         }
  22.         else
  23.         {
  24.                 for(int j=1;j<=m_PointNum;j=j+2)
  25.                 {        
  26.                         for(int k=1;k<=j;k=k+2)
  27.                         {
  28.                                 pDC->MoveTo(m_PointArray[j]);
  29.                                 pDC->LineTo(m_PointArray[k]);
  30.                         }
  31.                 }
  32.         }
  33.         m_bChangeDisplay = !m_bChangeDisplay;
  34.         pDC->SelectObject(pOldPen);
  35.         ReleaseDC(pDC);
  36.         CDialog::OnTimer(nIDEvent);
  37. }
复制代码


绘制给用到一三角函数得添加头文件#include <math.h> #define PI 2.0*asin(1.0)
我们来演示下功能实现的整个过程
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:140.上位机VC MFC绘制动态的背景图.rar 
文件大小:123.39 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!



回复

使用道具 举报

快速回复 返回列表 客服中心 搜索