【问题标题】:How to access original pixel in a view changed by StretchDIBits如何访问由 StretchDIBits 更改的视图中的原始像素
【发布时间】:2012-02-16 19:43:25
【问题描述】:

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

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

【问题讨论】:

    标签: mfc stretchdibits


    【解决方案1】:

    我不知道 StretchDIBits 如何将输入像素映射到输出像素,并且我怀疑它无论如何都会随 Microsoft 的突发奇想而改变。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      相关资源
      最近更新 更多