很喜欢vs2005和office2003里面的工具栏颜色配置,看起来他的那个颜色是有渐变效果的,我知道用gdi+可以很方便绘制渐变效果,但是要想得到类似office2003中的那种效果应该怎么弄呢?? 我对界面编程不是很行,那位大哥大姐知道的能不能给的提示,比如说在gdi+中如何去实现这样的渐变,渐变的梯度应该是如何设置的。我用photoshop来看RGB,怎么都找不准

解决方案 »

  1.   

    你可以使用BCGControlBar,很容易实现vs2005和office2003的界面样式
      

  2.   

    GDI+:Gradient, Brush/Pen
    GDI:GradientFill& so so.More information? MSDN!
      

  3.   

    我知道是那个函数,也知道怎么用GDI+,但是我画出来的渐变效果很不好,主要是参数设置的问题,没有人知道具体点的么,我画出来的渐变很单调,完全没有那种凸起的感觉,我想office应该不是用的贴图吧
      

  4.   

    需要一些颜色方面的知识:
    几种方法:
    GDI
    使用一个循环,使用一个连续变化的颜色和FillRect方法来填充一个移动Rect区域,但需要你对颜色有很好的把握GradientFill函数,这个函数不太好操作。GDI+
    class LinearGradientBrush生成一个渐变画刷。
      

  5.   

    to : CharlesPrince
    我就是对颜色不感冒啊,所以才看看大家有没有做过,绘制渐变的方法我知道,关键就是这个颜色的把握上,我很迟钝
      

  6.   

    BOOL GradientFillFast(CDC* pDCDest, LPRECT lpRect, COLORREF crFrom, COLORREF crTo, BOOL bHorz)
    {
    TRIVERTEX vert[2];
    vert[0].x      = lpRect->left;
    vert[0].y      = lpRect->top;
    vert[0].Red    = GetRValue(crFrom) << 8;
    vert[0].Green  = GetGValue(crFrom) << 8;
    vert[0].Blue   = GetBValue(crFrom) << 8;
    vert[0].Alpha  = 0x0000; vert[1].x      = lpRect->right;
    vert[1].y      = lpRect->bottom; 
    vert[1].Red    = GetRValue(crTo) << 8;
    vert[1].Green  = GetGValue(crTo) << 8;
    vert[1].Blue   = GetBValue(crTo) << 8;
    vert[1].Alpha  = 0x0000;
    GRADIENT_RECT gRect = { 0, 1 }; return GradientFill(pDCDest->GetSafeHdc(), vert, 2, &gRect, 1, bHorz ? GRADIENT_FILL_RECT_H : GRADIENT_FILL_RECT_V);
    }
      

  7.   

    GDI+:Gradient, Brush/Pen
    GDI:GradientFill
      

  8.   

    to: mynamelj(夏娃的诱惑)
    谢谢你提供的代码,我看了效果了,正是我想要的,再次感谢