Как получить доступ к исходному пикселю в представлении, измененном с помощью StretchDIBits - PullRequest
0 голосов
/ 16 февраля 2012

Вид в нашем унаследованном приложении отображает изображение с использованием StretchDIBits.Если вы не знакомы с StretchDIBits, он используется для отображения изображения с заданным размером другого размера в представлении MFC.Например, с помощью функции можно отобразить изображение размером (128 120) на (512 512).

В простых условиях, когда ширина или высота отображения кратны ширине изображения, я могу без проблем вычислить положение пикселя в исходном изображении из положения отображения.Но в другом случае, я думаю, мне нужно знать, как StretchDIBits распределяет пиксели из исходного изображения для отображения прямоугольника заданного размера, особенно когда нет кратных размерам двух.

1 Ответ

1 голос
/ 17 февраля 2012

Я не знаю, как StretchDIBits отображает входные пиксели в выходные пиксели, и я подозреваю, что он все равно может измениться по прихоти Microsoft.

Создайте изображение того же размера, что и ваш ввод, и заполните пиксели с увеличивающимися значениями: (0,0) получает RGB (0,0,0), (0,1) получает RGB (0,1,0) , (10,20) получает RGB (10,20,0) и т. Д. Создайте DC памяти того же размера, что и ваш вывод, и используйте StretchDIBits для рисования изображения в нем. Теперь каждый пиксель в этом DC может быть отображен обратно на вход по цвету, который он содержит.

...