Насчет BC точно не скажу, но вообще по-правильному на уровне Win API это делается примерно так (фрагмент из моего кода):
 Код:
           // temporary CDC for better visualization
            CDC NewCDC;
            NewCDC.CreateCompatibleDC(&PaintDC);
            // create bitmap for this CDC
            CBitmap Bitmap;
            Bitmap.CreateCompatibleBitmap(&PaintDC, iClientWidth, iClientHeight);
            CBitmap *pCurBitmap = NewCDC.SelectObject(&Bitmap);
         // draw image
         m_pImage->Stretch(NewCDC.GetSafeHdc(), Rect);
            PaintDC.BitBlt(0, 0, iClientWidth, iClientHeight, &NewCDC, 0, 0, SRCCOPY);
            NewCDC.SelectObject(pCurBitmap);
Суть в том, что переписовывать нужно на вспомогательный bitmap, который потом одной командой выводить на экран, что происходит очень быстро и незаметно для глаза.