Мне нужно преобразовать необработанные пиксельные данные (строки * col = 479 * 638), которые не выровнены по DWORD, в растровые данные с выравниванием по DWORD. У меня мало сомнений.
1) Когда я говорю, что d выровнено по слову, речь идет о выделении общей памяти, выровненной по двойному слову, или о выравнивании ширины по DWORD?
2) Скажем, если речь идет о том, чтобы фактическая ширина была выровнена по DWORD, то из-за выравнивания по DWORD я добавляю дополнительные 2 байта в конце, чтобы сделать ширину = 640. но когда я делаю memcopy из источника в пункт назначения, он оставляет темно-черный линия внизу. Но мне не нужны эти темные линии, так как они создают путаницу с реальным изображением. Итак, как я могу избежать этой черной линии в конце?
Чтобы решить эту проблему, я предположил, что речь идет об общей выделенной памяти, которая выровнена по двойному слову. И я выделил столько памяти, выровненной по двойному слову.
bitmapData = (LPBYTE) GlobalAlloc(GMEM_FIXED, bmiHeader->biSizeImage);
Где bmiHeader->biSizeImage = nrows * dowrdalignedwidth * BPP.
Выполняя настоящую memcopy, я копирую и записываю в rows*cols*BPP
. Это правильно?