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

Mfc 如何在StretchDIBits更改的视图中访问原始像素,mfc,stretchdibits,Mfc,Stretchdibits,传统应用程序中的一个视图使用StretchDIBits显示图像。如果您不熟悉StretchDIBits,它用于在MFC视图上以给定大小显示另一个大小的图像。例如,可以使用该功能在(512512)上显示大小为(128120)的图像 在显示的宽度或高度是图像宽度或高度的倍数的简单情况下,我可以根据显示的位置毫无问题地计算原始图像中像素的位置。但在另一种情况下,我想我需要知道StretchDIBits如何将原始图像中的像素分布到给定大小的显示矩形中,特别是在两个大小之间没有倍数的情况下。我不知道Str

传统应用程序中的一个视图使用StretchDIBits显示图像。如果您不熟悉StretchDIBits,它用于在MFC视图上以给定大小显示另一个大小的图像。例如,可以使用该功能在(512512)上显示大小为(128120)的图像


在显示的宽度或高度是图像宽度或高度的倍数的简单情况下,我可以根据显示的位置毫无问题地计算原始图像中像素的位置。但在另一种情况下,我想我需要知道StretchDIBits如何将原始图像中的像素分布到给定大小的显示矩形中,特别是在两个大小之间没有倍数的情况下。

我不知道StretchDIBits如何将输入像素映射到输出像素,我怀疑它可能会因微软的突发奇想而改变

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