StretchBlt еще раз
От: nut888 Россия  
Дата: 27.09.04 13:58
Оценка:
Я хочу вывести bitmap на кнопке
Использовал фрагменты кода из этого форума


void Cdialog_mesh_rot_2::OnPaint() 
{ CBitmap b, bs; BITMAP b_Info; CDC dcMemS, dcMemD;

    CPaintDC dc(this);
    
 b.LoadBitmap(IDB_BITMAP1); b.GetBitmap(&b_Info);
 CBitmap *b_old=dcMemS.SelectObject(&b);

 CDC *dcButton = mc_button1.GetDC();
 dcMemD.CreateCompatibleDC(dcButton);


 bs.CreateCompatibleBitmap(dcButton, 40, 40);
 CBitmap *bs_old=dcMemD.SelectObject(&bs);
 //dcMemD.FillSolidRect(10, 10, 20, 20, RGB(200, 200, 200));

 dcMemD.SetStretchBltMode(HALFTONE  );
 if(dcMemD.GetDeviceCaps(RASTERCAPS) != RC_STRETCHBLT ) MessageBox("not support");
 dcMemD.StretchBlt(0, 0, 40, 40,   &dcMemS, 0, 0, b_Info.bmWidth, b_Info.bmHeight,   SRCCOPY);

 dcMemS.SelectObject(b_old);
 dcMemD.SelectObject(bs_old);


 mc_button1.SetBitmap(bs);
 mc_button2.SetBitmap(b);
 UpdateWindow();
}


В результате получаю MessageBox("not support");
Я пробовал вместо dcButton другие типы с тем же результатом
Что я делаю неправильно
В результате выполнения я вижу черный квадрат
Картинка уменьшается



27.09.04 20:15: Перенесено из 'C/C++'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.