如何宣告及存取很多張bitmap |
尚未結案
|
propc
一般會員 ![]() ![]() 發表:4 回覆:2 積分:1 註冊:2005-09-26 發送簡訊給我 |
我在.h檔是這樣宣告的
Graphics::TBitmap *SelectImg;
在.cpp檔是這樣宣告的
SelectImg = new Graphics::TBitmap[10];
SelectImg[0].Width = 20;
到目前是沒錯了~
但當我要把它show出來的時候:
showimg1->Canvas->Draw(0, 0, SelectImg[0]);
它的錯誤訊息是:Cannot convert 'TBitmap' to 'TGraphic'
還有Type mismatch in parameter 'Grapgic'{wanter 'TGraphic *',got 'TBitmap'} 以上第一個問題~~ 然後我想把SelectImg丟到副函式mask();
我是這麼宣告得mask(Graphics::TBitmap *SelectImg);
請問這樣對嗎? 還有原本只有宣告一個SelectImg的時候
SelectImg = new Graphics::TBitmap;
用的是SelectImg->Width=20;
為什麼宣告了陣列之後變成SelectImg[0].Width = 20;
呢?從"->"變成"." 我想應該是基本觀念的問題~希望各位前輩不吝指教~
|
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
您好:
試試下面程式碼
Graphics::TBitmap *SelectImg[5]; void __fastcall mask(Graphics::TBitmap* pBMP) //mask我用灰階效果取代 { pBMP->PixelFormat = pf24bit; BYTE *byPtr = NULL; BYTE byGray; for (int y=0; yHeight; y ) { byPtr = (BYTE*)pBMP->ScanLine[y]; for (int x=0; xWidth; x ) { byGray = (byPtr[x*3] byPtr[x*3 1] byPtr[x*3 2])/3; byPtr[x*3 ] = byGray; byPtr[x*3 1] = byGray; byPtr[x*3 2] = byGray; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { for (int i=0; i<5; i ) { SelectImg[i] = new Graphics::TBitmap; SelectImg[i]->LoadFromFile(IntToStr(i 1) ".bmp"); //((TImage* )FindComponent("Image" IntToStr(i 1)))->Picture->Assign(SelectImg[i]); ((TImage* )FindComponent("Image" IntToStr(i 1)))->Canvas->Draw(0, 0, SelectImg[i]); } mask(SelectImg[0]); Image6->Picture->Assign(SelectImg[0]); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { for (int i=0; i<5; i ) { if (SelectImg[i] != 0) { delete SelectImg[i]; SelectImg[i] = NULL; } } }順心 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |