Функциональность C++ Scanline в конструкторе embarcadero
Эм ... Я думал, что понял линию сканирования... но когда я перехожу через код, исходный указатель остается пустым, и nothng передается. Если у вас есть какие-то советы, я вас слушаю.
это ядро моего кода, я надеюсь сделать что-то с пикселями между чтением и записью, но эта часть не работает, и я не знаю почему.
void TDriverFrm::MoveBmp(Graphics::TBitmap *Dest, Graphics::TBitmap *Source, TColor Color) { int x,y; TRGBTriple *Sbyte, *Dbyte; for(y=0; y<TILEDIM; y++){ Sbyte = (TRGBTriple *)Source->ScanLine[y]; Dbyte = (TRGBTriple *)Dest->ScanLine[y]; for(x=0; x<TILEDIM; x++){ Dbyte[x] = Sbyte[x]; } } }
Dave Kreskowiak
Вам придется определить, что "не работает". Это нам ни о чем не говорит. Что именно должен делать код и что он на самом деле делает?
Строка сканирования-это всего лишь массив байтов, составляющих одну строку пикселей в растровом изображении.
completeknowitall
извините, я думал, что это очевидно ( я думаю, что это никогда не бывает), я пытаюсь скопировать пиксельные данные пиксель за пикселем из одного растрового изображения в другое, используя функцию scanline. линия:
Sbyte = (TRGBTriple *) Источник->Scanline[y];
назначает указатель на правильную строку (я думаю) и линию
Dbyte[x] = Sbyte[x];
следует передать данные RGB в целевое растровое изображение. однако мой отладчик показывает, что
Sbyte[0] ... Sbyte[2] содержит все 0x00
(или, скорее, "\0", потому что он думает, что это символ *)
Я надеялся, что кто-то с опытом работы в scanline сможет указать на "очевидную" ошибку, которую я совершил.