Я отображаю JPG в C ++ CWnd окне, используя GDI +. JPG имеет чисто белый фон, 0xffffff, но при отображении с использованием graphics.DrawImage, фон не совсем белый со смесью пикселей, таких как 0xfff7f7, 0xf7fff7, 0xf7f7f7. Ниже приведен код, я пробовал различные настройки, такие как CompositingMode, SmoothingMode и т. Д. Изображение не масштабируется.
Странно то, что цвет фона отличается в зависимости от другого небелого содержимого изображения. Если я сделаю простой полностью белый JPG, то он сработает, или даже в основном белый с черным текстом. Сравнение изображений показано ниже.
CClientDC dc(this);
Gdiplus::Graphics graphics(dc);
Gdiplus::Bitmap* bmp = Gdiplus::Bitmap::FromFile( L"c:\\test.jpg" );
graphics.SetInterpolationMode(Gdiplus::InterpolationModeHighQuality);
//graphics.SetCompositingQuality(Gdiplus::CompositingQualityHighQuality);
graphics.SetCompositingQuality(Gdiplus::CompositingQualityDefault);
graphics.SetCompositingMode(Gdiplus::CompositingModeSourceCopy);
//graphics.SetSmoothingMode( Gdiplus::SmoothingMode::SmoothingModeDefault );
graphics.DrawImage(bmp, 0, 0, bmp->GetWidth(), bmp->GetHeight() );
Здесь у меня есть текст и немного смешения только на левой стороне изображения (без альфа, это JPG). Все справа чисто белое. Вы можете видеть, что фон весь серый.
![alt text](https://i.stack.imgur.com/cmv0l.jpg)
Здесь я начал удалять внутренний контент (только с левой стороны). После определенного момента весь фон начинает отображаться белым. ???
![alt text](https://i.stack.imgur.com/b8tF2.jpg)
На самом деле не имеет значения, какую часть области изображения я удаляю, прежде чем она начнет отображать белый цвет, пока я удаляю большую ее часть. То же самое происходит для PNG.
Вот оригинальное изображение test.jpg ...
![alt text](https://i.stack.imgur.com/CGwhI.jpg)