Я пишу программу, которая открывает, вращает, масштабирует, инвертирует цвет, преобразует в оттенки серого и сохраняет растровое изображение (.bmp) Но я, похоже, не получаю преобразование в оттенки серого (то есть черно-белые) работает каждый код работает отлично ...Win32 bitmap color to grayscale
код для моего инверсия цвета ниже ...
case 3:
{
hdc=GetDC(hWnd);
GetClientRect(hWnd,&rt);
BitBlt(hdc,0,0,rt.right,rt.bottom,hdc,0,0,NOTSRCCOPY);
ReleaseDC(NULL,hdc);
}
это похоже на работу, но получать DC и пытается изменить его серой шкалы ISN» t, используя BitBlt ... Я хотел бы получить представление о том, как получить DC и преобразовать его в серию ... wi napi спасибо ...
Не инверсия цвета что-то вроде '255-x'? Прямо сейчас, вы делаете '~ x', это совсем не то же вычисление. Хотя оба эти являются «инверсиями» цвета, первая инвертирует цветовую шкалу, тогда как последняя инвертирует пиксельные битовые шаблоны. –
Что возвращает 'GetLastError()' после BitBlt? –
BitBlt (hdc, 0,0, rt.right, rt.bottom, hdc, 0,0, NOTSRCCOPY); правильно работает для инвертирования цвета растрового изображения ... то, что, похоже, не работает, - это использование bitblt для преобразования изображения в оттенки серого ... Я попробовал BitBlt (hdc, 0,0, rt.right, rt.bottom, hdc, 0,0, ЧЕРНОТА | WHITNESS); но его не работает ... может быть, я не предполагаю использовать bitblt ... – Alex