線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:705
推到 Plurk!
推到 Facebook!

請問為什麼會scanline out of range

缺席
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-10-12 15:00:06 IP:1.168.xxx.xxx 訂閱
這是3x3低通的程式碼
[code cpp]
TMDIChild *Child;
Graphics::TBitmap *nBitmap = new Graphics::TBitmap();
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();
Byte *ptr,*aptr,*uptr,*dptr;
int sum1,sum2,sum3,type,up,down,left,right;
Child = (TMDIChild *) ActiveMDIChild;
Child->Image1->Picture->SaveToFile("temp.bmp");
nBitmap->LoadFromFile("temp.bmp");
pBitmap->LoadFromFile("temp.bmp");
DeleteFile("temp.bmp");

for (int y = 0;y < nBitmap->Height;y )
{
up=(y-1);
down=(y 1);
if(up<0) up=0;
if(down>nBitmap->Height) down=nBitmap->Height;
ptr=(Byte*)nBitmap->ScanLine[y];
aptr = (Byte*)pBitmap->ScanLine[y];
uptr=(Byte*)pBitmap->ScanLine[up];
dptr=(Byte*)pBitmap->ScanLine[down];
for (int x = 0;x < nBitmap->Width;x )
{
left=(x-1);
right=(x 1);
if(left<0) left=0;
if(right>nBitmap->Width) right=nBitmap->Width;
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum1 = (int)(uptr[4*left] uptr[4*x] uptr[4*right]
ptr[4*left] ptr[4*x] ptr[4*right]
dptr[4*left] dptr[4*x] dptr[4*right]);
sum2 = (int)(uptr[4*left 1] uptr[4*x 1] uptr[4*right 1]
ptr[4*left 1] ptr[4*x 1] ptr[4*right 1]
dptr[4*left 1] dptr[4*x 1] dptr[4*right 1]);
sum3 = (int)(uptr[4*left 2] uptr[4*x 2] uptr[4*right 2]
ptr[4*left 2] ptr[4*x 2] ptr[4*right 2]
dptr[4*left 2] dptr[4*x 2] dptr[4*right 2]);
aptr[4*x] = (Byte)(sum1/9);
aptr[4*x 1] = (Byte)(sum2/9);
aptr[4*x 2] = (Byte)(sum3/9);
}
}
Child->Image1->Picture->Assign(pBitmap);
[/code]
我不是有判斷
if(up<0) up=0;
if(down>nBitmap->Height) down=nBitmap->Height;

if(left<0) left=0;
if(right>nBitmap->Width) right=nBitmap->Width;
為什麼還會scanline out of range呢
麻煩大俠了
encoref70036
一般會員


發表:29
回覆:47
積分:15
註冊:2011-05-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-10-12 18:17:03 IP:1.168.xxx.xxx 訂閱
它的範圍是從0開始到height-1、width-1
所以要寫成這樣
if(up<0) up=0;
if(down>nBitmap->Height-1) down=nBitmap->Height-1;

if(left<0) left=0;
if(right>nBitmap->Width-1) right=nBitmap->Width-1;
系統時間:2017-10-22 1:32:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!