не работает GradientFill
От: DigitALL  
Дата: 11.04.08 05:42
Оценка:
люди добрые, подскажите в чем проблемма
использую GradientFill для заливки фона диалога, вместо градиента, получаю "черный квадрат".
вот кусочек кода:


void CTestWindowDlg::OnPaint() 
{
    CRect ClientRect;
    GetClientRect(ClientRect);

    CPaintDC dc(this); // Контекст устройства для рисования

    CBitmap m_bitmap;
    CBitmap* m_pOldBitmap;

    CDC mDC;
    mDC.CreateCompatibleDC(&dc);
    m_bitmap.CreateCompatibleBitmap(&mDC, 1024, 768);
    m_pOldBitmap = mDC.SelectObject(&m_bitmap);

    TRIVERTEX        vert[2];
    GRADIENT_RECT    gRect;
    vert [0] .x      = ClientRect.left+1;
    vert [0] .y      = ClientRect.top+1;
    vert [0] .Red    = 0xA000;
    vert [0] .Green  = 0xA000;
    vert [0] .Blue   = 0xA000;
    vert [0] .Alpha  = 0x0000;
    vert [1] .x      = ClientRect.right-1;
    vert [1] .y      = ClientRect.bottom-1;
    vert [1] .Red    = 0xFF00;
    vert [1] .Green  = 0xFF00;
    vert [1] .Blue   = 0xFF00;
    vert [1] .Alpha  = 0x0000;
    gRect.UpperLeft  = 0;
    gRect.LowerRight = 1;
    if( mDC.GradientFill(vert,2,&gRect,1,GRADIENT_FILL_RECT_V) )
    {
        mDC.Rectangle(10,10,50,50);
        mDC.Rectangle(20,20,40,40);
    }

    dc.BitBlt(0,0,ClientRect.right,ClientRect.bottom,&mDC,0,0,SRCCOPY);
    mDC.SelectObject(m_pOldBitmap);

    //CDialog::OnPaint();    
}


в результате получаем следующее:
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.