Насчет 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, который потом одной командой выводить на экран, что происходит очень быстро и незаметно для глаза.