工控编程吧
标题:
实现位图进度条--上位机VC
[打印本页]
作者:
qq263946146
时间:
2017-6-12 19:40
标题:
实现位图进度条--上位机VC
(, 下载次数: 238)
上传
点击文件名下载附件
实现位图进度条 实现位图进度条
功能展示
微软提供有一进度条,但样式比较单一 ,不能实现图片显示功能,我们当前例程通过继承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 );
分别用于设置进度条的位置,范围,进度数值,具体函数的实现参考例程源码部分
复制代码
(, 下载次数: 0)
上传
点击文件名下载附件
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4