实现位图进度条--上位机VC
实现位图进度条 实现位图进度条 功能展示 微软提供有一进度条,但样式比较单一 ,不能实现图片显示功能,我们当前例程通过继承Cstatic类实现图片类型的进度条,效果如图,点击设置位置,可将进度条进度设置在指定位置,点击模拟进度可将进度条从头到尾走一遍 要点提示 - 例程图片进度条的实现主要在绘制函数OnPaint()中实现,先绘制出背景图片,再根据进度绘制出前景图片的比例区域
- void CBmpProgress::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
-
- m_length = (float)m_nPos/(m_nUpper-m_nLower);
- GetClientRect(&m_rect);
- pDCBack->CreateCompatibleDC(&dc);
- pDCFore->CreateCompatibleDC(&dc);
- bmpBack.GetBitmap(&bmback);
- bmpFore.GetBitmap(&bmfore);
- pDCBack->SelectObject(bmpBack);
- dc.StretchBlt(0,0,m_rect.Width(),m_rect.Height(),pDCBack,0,0,bmback.bmWidth,bmback.bmHeight,SRCCOPY);
- (CBitmap*)pDCFore->SelectObject(bmpFore);
- dc.StretchBlt(0,0,m_rect.Width()*m_length,m_rect.Height(),pDCFore,0,0,bmfore.bmWidth*m_length,bmfore.bmHeight,SRCCOPY);
-
- pDCBack->DeleteDC();
- pDCFore->DeleteDC();
- }
复制代码实现功能 - 1.新建基于对话框的应用程序
- 2.新建一新的类,class CBmpProgress : public Cstatic,用于实现图片进度条。
- 3.添加类的成员变量,并在构造函数中初始化,在析构函数中释放
- private:
- int m_nLower;
- int m_nUpper;
- int m_nStep;
- int m_nPos;
- float m_length;
- CRect m_rect;
- CBitmap * oldbmp;
- CBitmap bmpBack;
- CBitmap bmpFore;
- CDC * pDCBack;
- CDC * pDCFore;
- BITMAP bmback;
- BITMAP bmfore;
复制代码- 4.再添加成员函数
- int SetStep( int nStep );
- int StepIt();
- int SetPos(int nPos);
- int GetPos();
- void GetRange(int &lower,int &upper);
- void SetRange( int nLower, int nUpper );
- int OffsetPos( int nPos );
- 分别用于设置进度条的位置,范围,进度数值,具体函数的实现参考例程源码部分
复制代码
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|