图片移动的问题
我写了一个图片左移的子程序,
BmpBuffer保存了源图片
BmpTemp为一个已分配的位图指针,为处理方便设为8位方式(pf8bit)
Image1用来显示图片移动效果
int pw = BmpBuffer->Width, ph = BmpBuffer->Height ;
int ww = Image1->Width, wh = Image1-> Height;
int i, j, k;
Byte *ptrs, *ptrt;
BmpTemp->PixelFormat = pf8bit;
BmpTemp->Palette = BmpBuffer->Palette ;
BmpTemp->Width = ww; BmpTemp->Height = wh;
for (i=0; i<pw; i++, j--) {
for (j=0; j<ph; j++) {
ptrt = (Byte *)BmpTemp->ScanLine[j]; ptrs = ptrt+1;
for (k=0; k<ww-1; k++, ptrt++, ptrs++) *ptrt = *ptrs;
*ptrt = BmpBuffer->Canvas->Pixels[i][j];
}
Image1->Canvas->Draw(0,0,BmpTemp);
Application->ProcessMessages() ;
}
现在的问题是:
虽然图片移动效果出来了,
但是图片与原图片的颜色完全不一样了(能辨认出轮廓来)
经过分析发现问题出在下面语句上:
*ptrt = BmpBuffer->Canvas->Pixels[i][j];
读出的原图片象素颜色送到目标图片中显示就不对了,我估计是调色板或颜色转换的问题,但不知道如何解决!