现已经实现椭圆按钮,我派生了一个基于CBUTTON的类,并重写了函数如下:
void CMyBtn::GradientFill (CDC* pDC, CRect* pRect)
{ CBrush* pBrush;

pBrush = new CBrush (RGB (36,94,220));   //(RGB (92,110,174));       int nWidth = pRect->Width ();
    int nHeight = pRect->Height ();
    CRect rect;    for (int i=0; i<nHeight; i++) 
{
        rect.SetRect (0, i, nWidth, i+1 );
        pDC->FillRect (&rect, pBrush);
    }  
delete pBrush;
}
现在的问题是该椭圆按钮的颜色都是一种颜色,没有立体感,我希望椭圆从外向内,颜色渐渐变深,能有立体感效果,不知道如何实现!

解决方案 »

  1.   

    改变画笔.创建的时候
    m_MyPen0.CreatePen(PS_INSIDEFRAME | PS_SOLID, 1, RGB(255, 255, 255));
    m_MyPen1.CreatePen(PS_INSIDEFRAME | PS_SOLID, 1, RGB(232, 232, 232));
    m_MyPen2.CreatePen(PS_INSIDEFRAME | PS_SOLID, 1, RGB(209, 209, 209));
    ...画的时候选择不同的画笔自绘按钮的不同部分...
      

  2.   

    RGB(209, 209, 209)里面就是画笔创建的RGB颜色,范围0x00-0xFF,值越大,按照RGB和YCbCr的关系可知亮度越高.
        上面的画笔示例是灰度变化的,要画其它颜色的调整画笔创建的RGB即可.
      

  3.   

    Set WIndow rgn 吧。不然可以点边上的。推荐贴图比较好。mouse on, mouse move 你就换图。