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

如何宣告及存取很多張bitmap

尚未結案
propc
一般會員


發表:4
回覆:2
積分:1
註冊:2005-09-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-05 18:27:05 IP:140.116.xxx.xxx 未訂閱
我在.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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-07 14:58:08 IP:203.69.xxx.xxx 未訂閱
您好: 試試下面程式碼
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;
        }
    }
}
順心
系統時間:2024-04-28 23:55:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!