SetDIBitsToDevice, StretchDIBits, VB6 - PullRequest
       15

SetDIBitsToDevice, StretchDIBits, VB6

1 голос
/ 13 октября 2011

Раньше я хорошо справлялся с этими вещами, но это было давно!

У меня есть пример программы для фрейм-граббера, которая работает нормально, она использует эту строку (после некоторых других вещей) для отображения изображения в PictureBox:

SetDIBitsToDevice (Picture1.hdc, 0, 0, gSizeX, gSizeY, 0, 0, 0, gSizeY, gSurfAddr, bmpInfo, DIB_RGB_COLORS)

Все, что я хочу сделать, это изменить это, чтобы я мог создать масштабированное изображение. Поэтому я изменил эту строку на:

StretchDIBits (Picture1.hdc, 0, 0, w, h, 0, 0, gSizeX, gSizeY, gSurfAddr, bmpInfo, DIB_RGB_COLORS, vbSrcCopy) .. где w и h - размер изображения, которое я хочу (сначала я пробовал то же, что и gSizeX / y, около 700 * 500).

Но у меня нет изображения, иногда только белого, иногда того, что выглядит как неинициализированная память.

Я совершил простую ошибку или мне нужно сделать больше?

Спасибо

1 Ответ

1 голос
/ 13 октября 2011

Попробуйте вызвать SetStretchBltMode перед StretchDIBits.Иногда изменение размера работает неправильно без SetStretchBltMode.Параметры: COLORONCOLOR (быстрое изменение размера), HALFTONE (высококачественное изменение размера).

http://msdn.microsoft.com/en-us/library/dd145089(v=vs.85).aspx

...