Вывод оттенков серого в MFC
Добавлено: 26 фев 2005, 18:00
Пожалуйста, посоветуйте, как добиться, чтобы в моём классе, производном от CWnd, рисовались изображения в оттенках серого, а не цветные. Мне кажется, я всё сделал, как в хелпе написано, причём простейшим способом, вроде должно всё работать, но не работает. Вот моя функция, которая рисует:
void CProjParWnd::OnPaint()
{
CPaintDC dc(this);
CPalette* oldPal;
oldPal=dc.SelectPalette(&m_Palette, TRUE);
dc.RealizePalette();
RECT Rect;
GetClientRect(&Rect);
dc.BitBlt(0,0,Rect.right,Rect.bottom, m_pSrcDC, 0,0, SRCCOPY);
dc.SelectPalette(oldPal, TRUE);
}
В этой функции:
m_Palette - объект класса CPalette, палитра с оттенками серого, ранее созданная.
m_pSrcDC - указатель на контекст изображения, оно в объекте, производном от CImage.
Изображение действительно рисуется, такое как надо (можно узнать), но цветное, т.е. цветными разводами. Значит, палитра почему-то не выбралась. В чём моя ошибка? Хотелось бы вообще понимать этот механизм, у меня есть готовые функции по выводу серых изображений, но там всё очень сложно и совсем непонятно, вставлять в свою программу не понимая что - это, мне кажется, неправильно. Помогите, пожалуйста, разобраться!
void CProjParWnd::OnPaint()
{
CPaintDC dc(this);
CPalette* oldPal;
oldPal=dc.SelectPalette(&m_Palette, TRUE);
dc.RealizePalette();
RECT Rect;
GetClientRect(&Rect);
dc.BitBlt(0,0,Rect.right,Rect.bottom, m_pSrcDC, 0,0, SRCCOPY);
dc.SelectPalette(oldPal, TRUE);
}
В этой функции:
m_Palette - объект класса CPalette, палитра с оттенками серого, ранее созданная.
m_pSrcDC - указатель на контекст изображения, оно в объекте, производном от CImage.
Изображение действительно рисуется, такое как надо (можно узнать), но цветное, т.е. цветными разводами. Значит, палитра почему-то не выбралась. В чём моя ошибка? Хотелось бы вообще понимать этот механизм, у меня есть готовые функции по выводу серых изображений, но там всё очень сложно и совсем непонятно, вставлять в свою программу не понимая что - это, мне кажется, неправильно. Помогите, пожалуйста, разобраться!