And*_*hto 2 c++ mfc stretchblt cimage
我正在使用 MFCCDC尝试创建输出,目前正在尝试渲染一些图像。
在我的示例中,我希望输出约为300x300像素,但原始图片是2360x1884. 当将此图像加载到 aCImage并使用CRectbeing绘制它时300x300,结果真的很疯狂......
这是原始图像:
绘制图像:
如何正确绘制原始图像较大的图像?
示例代码:
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);
Run Code Online (Sandbox Code Playgroud)
默认情况下,该Draw方法将使用拉伸 Blt 模式,BLACKONWHITE如果图像大小相同,则该模式很好,但它会导致您在缩小图像时看到的颜色伪影,如下图所示:
通过将 Stretch Blt Mode 设置为HALFTONE,就可以观察到正确的颜色行为,所需要做的就是SetStretchBltMode在使用之前添加对 的调用Draw:
SetStretchBltMode(hdc, HALFTONE);
image.Draw(hdc, boundries);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |