0

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

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

4

1 回答 1

1

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

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

于 2012-02-16T20:14:58.907 回答