一种渐变色条形Bar的绘制
源程序:
/*文件: ColorBar.h功能: 绘制颜色渐变的条形Bar*/enum {GRAY=0,RED=1,GREEN=2,BLUE=3};class CColorBar {public:CColorBar();virtual ~CColorBar();void SetColorMode(int mode);void DrawColorBar(CRect &client,CClientDC &dc);private:UINT m_mode;};
实现文件:
/*文件: ColorBar.cpp功能: 绘制颜色渐变的条形Bar*/CColorBar::CColorBar(){m_mode=GRAY;}CColorBar::~CColorBar(){}void CColorBar::SetColorMode(int mode){m_mode=mode;}void CColorBar::DrawColorBar(CRect &client,CClientDC &dc){CRect m_tab;int N=255;COLORREF rgb;double dh=(double) client.Height()/N;CBrush *pBrush=NULL;dc.Rectangle(client);for(int i=0;i<N;i++){m_tab.left =client.left;m_tab.right =client.right;m_tab.bottom =client.bottom -i*dh;m_tab.top =m_tab.bottom -dh;switch(m_mode){case GRAY:rgb=RGB(i,i,i);break;case RED:rgb=RGB(i,0,0,);break;case GREEN:rgb=RGB(0,i,0);break;case BLUE:rgb=RGB(0,0,i);break;default:break;}pBrush=new CBrush(rgb);dc.FillRect(m_tab,pBrush);}delete pBrush;pBrush=NULL;}
调用范例:
CColorBar bar;CClientDC dc(this);CRect m_bar(100,10,150,300);bar.SetColorMode(RED);bar.DrawColorBar(m_bar,dc);
运行效果:
更改颜色选择类型,测试结果如下: