使用 StretchDIBits ,為什麼圖片顯示會這樣?? |
尚未結案
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
標題不知打什麼請建諒 (表達能力不好)
Dear All 小的用以下的 code ,為何顯示的圖片(附檔) 的最下面會如此(藍色框起來的地方)?? 要怎麼解決? 謝謝!! (code 是網路上找的) int cxW = 240; int cyH = 320; BITMAPINFO bmInfo; bmInfo.bmiHeader.biSize = sizeof(bmInfo.bmiHeader); bmInfo.bmiHeader.biWidth = cxW; bmInfo.bmiHeader.biHeight = 1; bmInfo.bmiHeader.biBitCount = 8; bmInfo.bmiHeader.biCompression = BI_RGB; bmInfo.bmiHeader.biXPelsPerMeter = 0; bmInfo.bmiHeader.biYPelsPerMeter = 0; bmInfo.bmiHeader.biClrUsed = 0; bmInfo.bmiHeader.biClrImportant = 0; RGBQUAD bmiColors[256] = {0x00}; RGBQUAD *pals = bmInfo.bmiColors; for(int i = 0; i < 256; i ) { pals[i].rgbBlue = i; pals[i].rgbGreen = i; pals[i].rgbRed = i; pals[i].rgbReserved = 0; //rgbReserved,這個位元組均設為零,有了這個位元組,使得色彩對照表上的每個 RGBQUAD 結構體長度均為 32 位元,可以使 32 位元的 CPU 存取時 } Graphics::TBitmap *MyBitMap = new Graphics::TBitmap(); MyBitMap->PixelFormat = pf8bit; MyBitMap->Width = cxW; //Bitmap的寬度 MyBitMap->Height = cyH; //Bitmap的高度 SetStretchBltMode(MyBitMap->Canvas->Handle, COLORONCOLOR); StretchDIBits(MyBitMap->Canvas->Handle ,0 ,0 ,cxW ,cyH ,0 ,0 ,bmInfo.bmiHeader.biWidth ,bmInfo.bmiHeader.biHeight ,gbyImgRaw ,&bmInfo ,DIB_RGB_COLORS, SRCCOPY); imgFImage->Picture->Assign(MyBitMap); |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
我極快速的看了一下,要先確認你的bcb版本是幾版? 若是六版,你一定要更新到update pack 4。否則 BITMAPINFO bmInfo; 這個地方有bug。
要不然建議你使用 TBitmap來處理也比較不會有問題。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2013-06-10 16:19:05, 註解 無‧
|
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
aftcast 謝謝你的回應, 請問 你所說的用 TBitmap來處理,要怎麼寫(code)呢?? 第一次寫這方面的程式,所以在網路上找到 用 StretchDIBits 的方法,所以就拿來用了。 我極快速的看了一下,要先確認你的bcb版本是幾版? 若是六版,你一定要更新到update pack 4。否則 BITMAPINFO bmInfo; 這個地方有bug。===================引 用 aftcast 文 章=================== 要不然建議你使用 TBitmap來處理也比較不會有問題。 |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
Image1->Canvas->StretchDraw(ARect, YourSourceBitamp); YourSourceBitmap 就是TBitmap,但這個bitmap你是如何而來我不了解,若是讀圖那就容易,用它的loadfromfile。 … 如果你沒辦法把你的來源用TBitmap來接住,那…你就去找bcb6 的update pack 4,更新看看了。 ===================引 用 2007 文 章===================aftcast 謝謝你的回應, 請問 你所說的用 TBitmap來處理,要怎麼寫(code)呢?? 第一次寫這方面的程式,所以在網路上找到 用 StretchDIBits 的方法,所以就拿來用了。 我極快速的看了一下,要先確認你的bcb版本是幾版? 若是六版,你一定要更新到update pack 4。否則 BITMAPINFO bmInfo; 這個地方有bug。===================引 用 aftcast 文 章=================== 要不然建議你使用 TBitmap來處理也比較不會有問題。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |