1 colorBar介绍
colorBar主要是指一些图像处理中使用的常见纯色或者渐变色条。
colorBar用途可作为测试样图来验证某些图像算法的效果,从而避免图像内容或者硬件对图像的干扰,使图像算法能够达到预期效果。
colorBar常见类型如下:
(1) 纯色图像
(2) 水平4条彩色条纹
(3) 垂直4条彩色条纹
(4) 垂直8条彩色条纹
(5) 纯色背景上纯色目标
2 colorBar生成实现源码(以渐变条为例)
/*
文件: ColorBar.h
功能: 绘制颜色渐变的条形Bar
*/
enum {GRAY=,RED=,GREEN=,BLUE=};
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=;
COLORREF rgb;
double dh=(double) client.Height()/N;
CBrush *pBrush=NULL;
dc.Rectangle(client);
for(int i=;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,,,);
break;
case GREEN:
rgb=RGB(,i,);
break;
case BLUE:
rgb=RGB(,,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(,,,);
bar.SetColorMode(RED);
bar.DrawColorBar(m_bar,dc);
运行后输出如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)