用滚动条控件实现改变rgb三原色的调配
效果图如图一
图一
利用类向导为对话框添加OnHScroll方法
利用类向导为三个滚动条添加成员变量,类型为control类型
利用类向导为edit_control控件添加成员变量,类型为value,然后选string类型
在OnInitDialog中初始化滚动条
//设置滚动条的滚动范围和当前位置
m_RedScroll.SetScrollRange(0, 255);
m_GreenScroll.SetScrollRange(0, 255);
m_BlueScroll.SetScrollRange(0, 255);
m_RedScroll.SetScrollPos(128);
m_GreenScroll.SetScrollPos(128);
m_BlueScroll.SetScrollPos(128);
重写OnScroll方法
int nCurPos = pScrollBar->GetScrollPos();
switch (nSBCode)
{
case SB_LINEDOWN:
nCurPos += 1;
break;
case SB_LINEUP:
nCurPos -= 1;
break;
case SB_PAGEDOWN:
nCurPos += 10;
break;
case SB_PAGEUP:
nCurPos -= 10;
break;
case SB_THUMBTRACK:
nCurPos = nPos;
break;
default:
break;
}
pScrollBar->SetScrollPos(nCurPos);
BYTE nRed, nGreen, nBlue;
nRed = m_RedScroll.GetScrollPos();
nGreen = m_GreenScroll.GetScrollPos();
nBlue = m_BlueScroll.GetScrollPos();
m_StrColorValue.Format("RGB(%d,%d,%d)", nRed, nGreen, nBlue);
UpdateData(FALSE);
CWnd *pWnd = GetDlgItem(IDC_SHOWCOLOR);
CDC *pDC = pWnd->GetDC();
CRect Rect;
pWnd->GetClientRect(&Rect);
CBrush Brush(RGB(nRed, nGreen, nBlue));
pDC->FillRect(Rect, &Brush);
运行后即可