MFC如何实现如下效果的渐变色?这种效果是不是一种广泛应用的成熟的色彩表示方法?求助大神帮忙解答~ 怎样实现如图的效果 求大神帮忙

mfc\u4e2d\u600e\u4e48\u7528\u6e10\u53d8\u8272\u586b\u5145\u6247\u5f62\uff0c\u54ea\u4f4d\u5927\u4fa0\u8d34\u4e9b\u4ee3\u7801

\u6807\u51c6VC\u4e0d\u4f7f\u7528\u63a7\u4ef6\u7684\u60c5\u51b5\u4e0b\uff0c\u662f\u6ca1\u6709\u6e10\u53d8\u8272\u7684\uff0c\u6240\u6709\u5b9e\u73b0\u7684\u6e10\u53d8\u90fd\u662f\u4f7f\u7528\u7ebf\u6761\u5faa\u73af\u753b\u51fa\u6765\u7684\uff0c\u53c2\u8003\u6211\u4e00\u4e2a\u7c7b\u4f3c\u95ee\u9898\u7684\u56de\u7b54\uff1a

\u53ea\u8981\u4f1a\u7535\u5b50\u8868\u683c\u7684\u4eba\u90fd\u4f1a\u505a\uff0c\u6700\u57fa\u672c\u7684\u3002

基本的思路是画线,然后找规律,截图工具很容易发现,RGB先是0,0,160左右,然后B值递增到255,然后G值递增到255,然后R从0到255递增,B值则递减到0,然后G递减到0,最后是R值递减到128,每次数值减1
MFC实现:
MoveWindow(200,200,1040,87);放到initdialog中
然后onpaint这样改
void CcolorbarDlg::OnPaint(){
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// 绘制图标 dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
int r,g,b;
r=0;
g=0;
b=160;
int i;
CClientDC dc(this);
for(i=0+20;b<=255;++i)
{
CPen newPen(PS_SOLID,1,RGB(r,g,b));
dc.SelectObject(&newPen);
dc.MoveTo(i,10);
dc.LineTo(i,50);
++b;
}
r=0;
g=0;
b=255;
for(;g<=255;++i)
{
CPen newPen(PS_SOLID,1,RGB(r,g,b));
dc.SelectObject(&newPen);
dc.MoveTo(i,10);
dc.LineTo(i,50);
++g;
}
r=0;
g=255;
b=255;
for(;r<=255;++i)
{
CPen newPen(PS_SOLID,1,RGB(r,g,b));
dc.SelectObject(&newPen);
dc.MoveTo(i,10);
dc.LineTo(i,50);
++r;
--b;
}
r=255;
g=255;
b=0;
for(;g>0;++i)
{
CPen newPen(PS_SOLID,1,RGB(r,g,b));
dc.SelectObject(&newPen);
dc.MoveTo(i,10);
dc.LineTo(i,50);
--g;
}
r=255;
g=0;
b=0;
for(;r>128;++i)
{
CPen newPen(PS_SOLID,1,RGB(r,g,b));
dc.SelectObject(&newPen);
dc.MoveTo(i,10);
dc.LineTo(i,50);
--r;
}
}

MFC中没有这个“广泛成熟”的效果,呵呵。
这个叫颜色棒,本身是一个比较常用的色彩表示法,
但在MFC实现上,其实是通过很多条竖线画出来的,网上代码很多,现在贴地址被吃,你自己搜这个:VC 颜色棒

MFC中有个dialog是专门选取颜色的。
忘记叫什么了

  • MFC濡備綍瀹炵幇濡備笅鏁堟灉鐨勬笎鍙樿壊?杩欑鏁堟灉鏄笉鏄竴绉嶅箍娉涘簲鐢ㄧ殑鎴愮啛鐨勮壊...
    绛旓細鍩烘湰鐨勬濊矾鏄敾绾匡紝鐒跺悗鎵捐寰嬶紝鎴浘宸ュ叿寰堝鏄撳彂鐜帮紝RGB鍏堟槸0,0,160宸﹀彸锛岀劧鍚嶣鍊奸掑鍒255锛岀劧鍚嶨鍊奸掑鍒255锛岀劧鍚嶳浠0鍒255閫掑锛孊鍊煎垯閫掑噺鍒0锛岀劧鍚嶨閫掑噺鍒0锛屾渶鍚庢槸R鍊奸掑噺鍒128锛屾瘡娆℃暟鍊煎噺1 MFC瀹炵幇锛歁oveWindow(200,200,1040,87);鏀惧埌initdialog涓 鐒跺悗onpaint杩欐牱鏀 void CcolorbarDlg:...
  • mfc鎬庝箞瀹炵幇鎶婂渾绛夊垎骞跺~涓婁笉鍚岀殑棰滆壊
    绛旓細鎸変互涓嬫楠ゆ搷浣滃嵆鍙1銆佺偣鍥炬濉厖锛岄夋嫨娓愬彉鑹层2銆佺偣鎷惧彇鐐癸紝閫夋嫨鍦嗗唴閮ㄤ竴鐐癸紝纭畾濉厖杈圭晫锛岄夋嫨瀹屾瘯鍥炶溅銆3銆佽瀹氶渶瑕佺殑棰滆壊锛岀偣棰滆壊鍚庨潰鐨勬柟鍧楁寜閽紝鍙互鏇存崲棰滆壊锛屽苟涓旇皟鑺傞鑹茬殑娣辨祬銆4銆佽缃ソ锛岀偣纭畾鍗冲彲銆
  • 扩展阅读:实体过多破解flexsim ... p53基因突变能活多久 ... p53突变型癌还能治愈吗 ... 吃鸡进不去msvcp140dll ... mfc还有人用吗 ... 丢失msvcp140 dll ... mef25下降是哮喘吗 ... solidworks删除实体 ... mef25下降需要治疗多久 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网