全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:5899
推到 Plurk!
推到 Facebook!

使用 StretchDIBits ,為什麼圖片顯示會這樣??

尚未結案
2007
中階會員


發表:54
回覆:90
積分:98
註冊:2008-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2013-06-10 15:21:21 IP:118.163.xxx.xxx 未訂閱
標題不知打什麼請建諒 (表達能力不好)

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);

http://delphi.ktop.com.tw/download/upload/51b57e716ba30_圖片1.PNG
附加檔案:51b57e716ba30_圖片1.PNG
編輯記錄
2007 重新編輯於 2013-06-10 15:25:07, 註解 無‧
2007 重新編輯於 2013-06-10 15:25:53, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2013-06-10 16:17:52 IP:114.32.xxx.xxx 訂閱
我極快速的看了一下,要先確認你的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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-06-10 16:31:42 IP:118.163.xxx.xxx 未訂閱
aftcast 謝謝你的回應,
請問 你所說的用 TBitmap來處理,要怎麼寫(code)呢??
第一次寫這方面的程式,所以在網路上找到 用 StretchDIBits 的方法,所以就拿來用了。

===================引 用 aftcast 文 章===================
我極快速的看了一下,要先確認你的bcb版本是幾版? 若是六版,你一定要更新到update pack 4。否則 BITMAPINFO bmInfo; 這個地方有bug。
要不然建議你使用 TBitmap來處理也比較不會有問題。
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2013-06-11 17:09:20 IP:114.32.xxx.xxx 訂閱
Image1->Canvas->StretchDraw(ARect, YourSourceBitamp);
YourSourceBitmap 就是TBitmap,但這個bitmap你是如何而來我不了解,若是讀圖那就容易,用它的loadfromfile。
如果你沒辦法把你的來源用TBitmap來接住,那…你就去找bcb6 的update pack 4,更新看看了。
===================引 用 2007 文 章===================
aftcast 謝謝你的回應,
請問 你所說的用 TBitmap來處理,要怎麼寫(code)呢??
第一次寫這方面的程式,所以在網路上找到 用 StretchDIBits 的方法,所以就拿來用了。

===================引 用 aftcast 文 章===================
我極快速的看了一下,要先確認你的bcb版本是幾版? 若是六版,你一定要更新到update pack 4。否則 BITMAPINFO bmInfo; 這個地方有bug。
要不然建議你使用 TBitmap來處理也比較不會有問題。
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-11-21 17:09:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!