如何访问由StretchDIBits更改的视图中的原始像素

时间:2012-02-16 19:43:26

标签: mfc stretchdibits

我们的遗留应用程序中的视图使用StretchDIBits显示图像。如果您不熟悉StretchDIBits,它将用于在MFC视图上将给定大小的图像显示为另一个大小。例如,可以使用该功能在(512,512)上显示尺寸(128,120)的图像。

在显示器的宽度或高度是图像的宽度或高度的多个的简单条件下,我可以毫无问题地从显示器的位置计算原始图像中的像素的位置。但在另一种情况下,我想我需要知道StretchDIBits如何将原始图像中的像素分配给显示给定大小的矩形,尤其是当两者之间没有大小的倍数时。

1 个答案:

答案 0 :(得分:1)

我不知道StretchDIBits如何将输入像素映射到输出像素,我怀疑它无论如何都会随着微软的想法而改变。

创建与输入大小相同的图像,并使用递增值填充像素:(0,0)获取RGB(0,0,0),(0,1)获取RGB(0,1,0) ,(10,20)得到RGB(10,20,0)等。创建一个与输出大小相同的内存DC,并使用StretchDIBits将图像绘制到其中。现在,DC中的每个像素都可以通过它包含的颜色映射回输入。