返回首页

喜来,我在麻烦了LockBits GDI函数,它不似乎正常工作。

这是我很简单的测试代码:


BitmapData dataHigh;

BitmapData dataImg;

Bitmap *image = new Bitmap(480,520,PixelFormat24bppRGB);

Bitmap *imgSx = new Bitmap(480,480,PixelFormat24bppRGB);

 

imgSx->LockBits(Rect(10,10,10,10),ImageLockModeRead | ImageLockModeWrite,PixelFormat24bppRGB,&dataHigh);

 

image->LockBits(Rect(10,10,10,10),ImageLockModeRead | ImageLockModeWrite,PixelFormat24bppRGB,&dataImg);

 

memset(dataHigh.Scan0,0xff,320);

memcpy(dataImg.Scan0,dataHigh.Scan0,320);

 

imgSx->UnlockBits(&dataHigh);

image->UnlockBits(&dataImg);


我将填补空白,只在选择的图像部分,但结果,如果某行没有一个正方形,似乎,从SCAN0指出缓冲区包含阿拉的图像数据,并用矩形选择,不仅部分。

我强迫memset和memcpy的字节数,因为这两个BitmapData步幅值总是喜欢整幅图像1440。

可以的LockBits功能错误?

谢谢你在前进!

马尔科

回答

评论会员:S 时间:2