几个函数,告别MFC自带调色板
BOOL CWnd::SetWindowPos(const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags);
void CRect::SetRect(int x1,int y1,int x2,int y2) throw( );
void CDC::FillSolidRect(LPCRECT lpRect,COLORREF clr );
绘制每个色条都不是什么麻烦的事情,麻烦的是怎么让色彩过渡更平滑,美观。
这个调色板有很多人性化的设计,很直观。
上半部分,每个色带里面可选的颜色值都是256个值,而颜色的范围则是由另外2个原色当前选定值决定的。
下半部分,从上到下,是一个灰度阶梯,从左到右,则是三原色的真值变化(当然你把它看作是256进制的数),具体变化如下:
R:255 -》255 -》0 -》0 -》0 -》255 -》255
G:0 -》255 -》255 -》255 -》0 -》0 -》0
B:0 -》0 -》0 -》255 -》255 -》255 -》0
注意:这个真值表,每次只有一项真值发生了变化。
然后整体从左上角到右下角时,遵循的规律是:(J是从左到右发生变化的某个真值递增值)
255-》255 0-》0 255《-》0
前H/2: 255 255递减到0 255递减到J
后H/2 255递减到0 0 J递减到0