QQ登录

只需一步,快速开始

95上位机VC MFC进度条渐变颜色显示

[ 复制链接 ]

95上位机VC MFC进度条渐变颜色显示

95上位机VC MFC进度条渐变颜色显示

95上位机VC MFC进度条渐变颜色显示


功能展示

MFC默认的进度条颜色是单一的,如果想实现进度条的颜色渐变显示,我们得自己动手编辑实现,我们当前例程简单实现了渐变的进度条功能,效果如图;
要点提示
只需要在从CProgressCtrl派生自己的类,在OnPaint() 函数中实现便可。进度条渐变色从左到右渐变,只要把进度条的矩形框从左到当前的位置,依次填充颜色值渐增的颜色便可;我们当前例程是使用了循环实现for(int m=255;m>0;m--)
实现功能
1.新建基于对话框的应用程序
2.从CProgressCtrl派生一个新类,class CProgressEx : public CProgressCtrl,添加三个变量用于设置不同的颜色值private: COLORREF m_crText;   //文本颜色 COLORREFm_crProgress; //进度颜色 COLORREF m_crBlank; //空白区域颜色;并在构造函数中初始化 m_crText   = RGB(255,0,  0); m_crBlank   = RGB(182, 182, 182); m_crProgress = RGB(0,255, 0);

3.添加OnPaint()函数实现当前进度文字显示功能;
  1. //渐变文字显示
  2.         PAINTSTRUCT ps;
  3.         CDC* pDC = BeginPaint(&ps);                                                //开始绘制
  4.         int nPos = GetPos();                                                        //获取当前进度条的位置
  5.         CRect clientRC;
  6.         GetClientRect(clientRC);                                                //获取客户区域
  7.         pDC->SetBkMode(TRANSPARENT);                                        //将设备上下文的背景模式设置为透明
  8.         int nMin, nMax;
  9.         GetRange(nMin, nMax);                                                        //获取进度条的显示范围
  10.         //获取单位刻度
  11.         double dFraction = (double)clientRC.Width() / (nMax-nMin);
  12.         int nLeft = nPos * dFraction;                                        //计算左边距
  13.         CRect leftRC  = clientRC;
  14.         leftRC.right  = nLeft;
  15.         CRect rightRC = clientRC;
  16.         rightRC.left  = nLeft;
复制代码
  1. for(int m=255;m>0;m--)
  2.         {
  3.                 int x;
  4.                 x = leftRC.Width() * m / 255;
  5.                
  6.                 pDC->FillRect(CRect(0,0,x,leftRC.Height()),&CBrush(RGB(0,m,255)));//蓝到青渐变
  7.         }
  8.         pDC->FillRect(rightRC, &CBrush(m_crBlank));        
  9.         ReleaseDC(pDC);                                                                        //释放设备上下文
  10.         EndPaint(&ps);
复制代码
4.自定义类的使用,添加进度条控件,关联变量CProgressEx m_Progress;添加按钮,关联函数用于触发定时器SetTimer(1, 100, NULL);再实现定时器处理功能
  if(1==nIDEvent)
  {
  int nMin, nMax;
  m_Progress.GetRange(nMin,nMax);
  if(m_Progress.GetPos()>=nMax)//进度完成时处理
  {
  CDialog::OnOK();
  }
  m_Progress.SetPos(m_Progress.GetPos()+1);  
  }

我们来演示下功能实现的整个过程

请点击此处下载

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

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

文件名称:95.上位机VC MFC进度条渐变颜色显示.rar 
文件大小:156.82 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

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

  

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

  

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


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索