I am using MFCs CDC to try to create output and am currently trying to render some images.
In my example I want the output to be around 300x300 pixels, but the original picture is 2360x1884. When loading this image into a CImage and drawing it using a CRect being 300x300, the result is really crazy...
Here is the original image:
Drawn image:
How do I properly draw an image where the original image is larger?
Sample code:
CImage image;
CDC* painter;
CString filepath = "puppy.jpg";
image.Load(filepath);
CRect boundries(x, y, x + 300, y + 300);
HDC hdc = *painter;
image.Draw(hdc, boundries);


By default the
Drawmethod will use the stretching Blt modeBLACKONWHITEwhich is fine if the image is the same size, however it will cause the color artifacting that you see when shrinking an image, as can be seen from the image below:By setting the Stretch Blt Mode to
HALFTONE, the correct color behaviour can then be observered, all that is required is to add a call toSetStretchBltModebefore you useDraw: