Я хочу вывести 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++'
Здравствуйте, nut888, Вы писали:
>>(RC_STRETCHBLT!=(dcMemD.GetDeviceCaps(RASTERCAPS) & RC_STRETCHBLT))
N>Так сообщения о несовместимости не возникает
потому что так правильно
A>>так картинка то правильно выводится или черный квадрат?
N>Картинка выводится неправильно
А система ничего не орет? просто я так и не нашел где ты создаешь контекст dcMemS.
т.е. вот ты его определил как объект оболочку MFC
CDC dcMemS;
//грузим каринку
....
//и уже
CBitmap *b_old=dcMemS.SelectObject(&b);
это не правильно. Запусти в DEBUG — е по-моему должно заорать