為什麼反白的結果和我預期的不一樣??? |
尚未結案
|
huangcc
一般會員 ![]() ![]() 發表:7 回覆:6 積分:2 註冊:2004-10-29 發送簡訊給我 |
請問一下!!!為什麼反白的結果和我預期的"全部反白"不一樣???結果只有圖片的左半邊約1/3有反白!!!為什麼ㄋ???
PS:圖片不知道為什麼不能上傳! 原程式:
Byte *ptr;
Graphics::TBitmap *TheBitmap;
TheBitmap=Image1->Picture->Bitmap;
for(int y=0; y < TheBitmap->Height; y )
{
ptr=(Byte*)TheBitmap->ScanLine[y];
for(int x=0; x < TheBitmap->Width; x )
ptr[x]=(Byte)(255-ptr[x]);
}
Repaint();
|
JerryKuo
版主 ![]() ![]() ![]() ![]() ![]() 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
引言: 請問一下!!!為什麼反白的結果和我預期的"全部反白"不一樣???結果只有圖片的左半邊約1/3有反白!!!為什麼ㄋ??? PS:圖片不知道為什麼不能上傳!你好: 可能忘了把pixelformat考慮進去,如果參考圖是8bits format,應該就不會錯。 如果參考圖是24bits format,那每個點就有RGB三個值,寫法就要有所更改 for(int y=0; y < (TheBitmap->Height*3); y =3) { ptr=(Byte*)TheBitmap->ScanLine[y]; for(int x=0; x < (TheBitmap->Width*3); x =3) { ptr[x]=(Byte)(255-ptr[x]); //B ptr[x 1]=(Byte)(255-ptr[x 1]); //G ptr[x 2]=(Byte)(255-ptr[x 2]); //R } } |
huangcc
一般會員 ![]() ![]() 發表:7 回覆:6 積分:2 註冊:2004-10-29 發送簡訊給我 |
JerryKuo:
非常謝謝你!!!
我是初學者,我試著把你給的那一段貼上,但還是沒辦法的說,它出現一個MessageBox上面寫著" Scan line index out of range ",且此時的圖片出現許多的橫線(看起來很像百葉窗???),我不曉得是哪裡出了狀況,請給予指導。謝謝!!!(很抱歉,圖片還是沒辦法上傳) void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Byte *ptr;
Graphics::TBitmap *TheBitmap;
TheBitmap=Image1->Picture->Bitmap;
for(int y=0; y < (TheBitmap->Height*3); y =3)
{
ptr=(Byte*)TheBitmap->ScanLine[y];
for(int x=0; x < (TheBitmap->Width*3); x =3)
{
ptr[x]=(Byte)(255-ptr[x]); //B
ptr[x 1]=(Byte)(255-ptr[x 1]); //G
ptr[x 2]=(Byte)(255-ptr[x 2]); //R
}
}
Repaint();
}
|
JerryKuo
版主 ![]() ![]() ![]() ![]() ![]() 發表:42 回覆:571 積分:322 註冊:2003-03-10 發送簡訊給我 |
|
huangcc
一般會員 ![]() ![]() 發表:7 回覆:6 積分:2 註冊:2004-10-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |