Копирование части битмапа
От: Swindler  
Дата: 07.12.06 10:06
Оценка:
Добрый день!
Необходимо скопировать часть одного CBitmap в другой CBitmap
Создал тестовый пример:


    //m_bmp - битмап, откуда копируем
    //m_partbmp -куда копируем
    SIZE m_size;
    m_bmp.GetSize(m_size);     HDC dc;
    dc = ::CreateCompatibleDC(0);
    m_partbmp.CreateCompatibleBitmap ( dc, m_size.cx/3, m_size.cy/2 ) ;
    CopyBitmap(m_bmp,0,0,m_size.cx/3, m_size.cy/2,m_partbmp,0,0);
    HWND h_bmp = ::GetDlgItem(m_hWnd,IDC_BMP2);
    ::SendMessage(h_bmp, STM_SETIMAGE,0,(LPARAM)m_partbmp.m_hBitmap);



При этом функция копирования определена так:


void CTestDlg::CopyBitmap(CBitmap& src, int x_src, int y_src, int width, int height, CBitmap& dst, int x_dst, int y_dst)
{
    CDC memDC,DC;
    memDC.CreateCompatibleDC(0);
    DC.CreateCompatibleDC(0);
    memDC.SelectBitmap(src.m_hBitmap);
    DC.SelectBitmap(dst.m_hBitmap);
    DC.BitBlt(x_src,y_src,width,height,memDC,0,0,SRCCOPY);       
}



При этом битмапа, в которую копирую остаеться черной, но в ней присутствуют те элементы, которые были в исходной части не зарисованы.

07.12.06 17:56: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.