再問一下貼圖的問題 |
尚未結案
|
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
我現在要先讀入一些圖..然後用TTimer讓它連續post出來 造成動態的效果
請問我的宣告為什麼過不了呢...
我找不出錯在哪...麻煩指導一下 謝謝~
會有錯誤訊息
Cannot convert 'TMemoryStream *' to 'TMemoryStream *[6]'
以下我是寫在TTimer裡面的code
void __fastcall TForm1::Timer1Timer(TObject *Sender) { int iIndex; TMemoryStream *(msBitmap[6])= new TMemoryStream[6]; Form1->DoubleBuffered=true; Graphics::TBitmap *bmpBuf=new Graphics::TBitmap; bmpBuf->Width=Image1->Width; bmpBuf->Height=Image1->Height; msBitmap[iIndex]->Position=0; bmpBuf->LoadFromStream(msBitmap[iIndex]); SetStretchBltMode(bmpBuf->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); bmpBuf->Canvas->CopyMode=cmSrcCopy; bmpBuf->Canvas->StretchDraw(Rect(0, 0, bmpBuf->Width, bmpBuf->Height), bmpBuf); SetStretchBltMode(Image1->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); Image1->Canvas->CopyMode=cmSrcCopy; Image1->Canvas->CopyRect(Rect(0, 0, Image1->Width, Image1->Height), bmpBuf->Canvas, Rect(0, 0, bmpBuf->Width, bmpBuf->Height)); Image1->Update(); iIndex ; if(iIndex>=6) { iIndex=0; } delete bmpBuf; } |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我現在要先讀入一些圖..然後用TTimer讓它連續post出來 造成動態的效果 請問我的宣告為什麼過不了呢... 我找不出錯在哪...麻煩指導一下 謝謝~ 會有錯誤訊息 Cannot convert 'TMemoryStream *' to 'TMemoryStream *[6]' 以下我是寫在TTimer裡面的codevoid __fastcall TForm1::Timer1Timer(TObject *Sender) { int iIndex; TMemoryStream *(msBitmap[6])= new TMemoryStream[6]; Form1->DoubleBuffered=true; Graphics::TBitmap *bmpBuf=new Graphics::TBitmap; bmpBuf->Width=Image1->Width; bmpBuf->Height=Image1->Height; msBitmap[iIndex]->Position=0; bmpBuf->LoadFromStream(msBitmap[iIndex]); SetStretchBltMode(bmpBuf->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); bmpBuf->Canvas->CopyMode=cmSrcCopy; bmpBuf->Canvas->StretchDraw(Rect(0, 0, bmpBuf->Width, bmpBuf->Height), bmpBuf); SetStretchBltMode(Image1->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); Image1->Canvas->CopyMode=cmSrcCopy; Image1->Canvas->CopyRect(Rect(0, 0, Image1->Width, Image1->Height), bmpBuf->Canvas, Rect(0, 0, bmpBuf->Width, bmpBuf->Height)); Image1->Update(); iIndex ; if(iIndex>=6) { iIndex=0; } delete bmpBuf; } visuala 你好: (1)早上不是已經回答過你了嗎?? 還有什麼問題呢?? (>>>// 請自行調整 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=>> --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
不不不..我就是依照此宣告方式...可是還是都會有一些Error跑出來
我檢查過了 也不知道哪裡錯了..所以想說問一下~~不好意思~
以下是我的錯誤訊息和我的code~我變數直接宣告全域..後來現在已經都個別宣告了 還是有問題??
我把這句改成這樣
msBitmap[i]->LoadFromFile(IntToStr(i+1)+".bmp");
compiler過了之後會產生以下這個錯誤
如果照原本的 msBitmap->LoadFromFile(IntToStr(i+1)+".bmp");
就有錯誤~Pointer to structure required on left side of -> or ->*的問題
我是哪裡出錯了呢...><...我想要試看看動態 可是都Compiler不了...
void __fastcall TForm1::FormCreate(TObject *Sender) { TMemoryStream *msBitmap[6]; for(int i=0;i<6;i++) { msBitmap[i]=NULL; msBitmap[i]=new TMemoryStream; msBitmap[i]->LoadFromFile(IntToStr(i+1)+".bmp"); } Timer1->Interval=500; // ½Ð¦Û¦æ½Õ¾ Timer1->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { TMemoryStream *msBitmap[6]; Timer1->Enabled=false; for(int i=0; i<6; i++) { if(msBitmap[i]!=NULL) { delete msBitmap[i]; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { TMemoryStream *msBitmap[6]; int iIndex=0; Form1->DoubleBuffered=true; Graphics::TBitmap *bmpBuf=new Graphics::TBitmap; bmpBuf->Width=Image1->Width; bmpBuf->Height=Image1->Height; msBitmap[iIndex]->Position=0; bmpBuf->LoadFromStream(msBitmap[iIndex]); SetStretchBltMode(bmpBuf->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); bmpBuf->Canvas->CopyMode=cmSrcCopy; bmpBuf->Canvas->StretchDraw(Rect(0, 0, bmpBuf->Width, bmpBuf->Height), bmpBuf); SetStretchBltMode(Image1->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); Image1->Canvas->CopyMode=cmSrcCopy; Image1->Canvas->CopyRect(Rect(0, 0, Image1->Width, Image1->Height), bmpBuf->Canvas, Rect(0, 0, bmpBuf->Width, bmpBuf->Height)); Image1->Update(); iIndex++; if(iIndex>=6) { iIndex=0; } delete bmpBuf; }發表人 - visuala 於 2003/10/20 09:44:35 發表人 - visuala 於 2003/10/20 10:14:15 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 不不不..我就是依照此宣告方式...可是還是都會有一些Error跑出來 我檢查過了 也不知道哪裡錯了..所以想說問一下~~不好意思~ 以下是我的錯誤訊息和我的code~我變數直接宣告全域..後來現在已經都個別宣告了 還是有問題?? 我把這句改成這樣 msBitmap[i]->LoadFromFile(IntToStr(i+1)+".bmp"); compiler過了之後會產生以下這個錯誤 如果照原本的 msBitmap->LoadFromFile(IntToStr(i+1)+".bmp"); 就有錯誤~Pointer to structure required on left side of -> or ->*的問題 我是哪裡出錯了呢...><...我想要試看看動態 可是都Compiler不了...TMemoryStream *msBitmap[6]; // 加上這兩行 int iIndex=0; void __fastcall TForm1::FormCreate(TObject *Sender) { // TMemoryStream *msBitmap[6]; // 去掉 for(int i=0;i<6;i++) { msBitmap[i]=NULL; msBitmap[i]=new TMemoryStream; msBitmap[i]->LoadFromFile(IntToStr(i+1)+".bmp"); } Timer1->Interval=500; // ½Ð¦Û¦æ½Õ¾ Timer1->Enabled=true; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormDestroy(TObject *Sender) { // TMemoryStream *msBitmap[6]; // 去掉 Timer1->Enabled=false; for(int i=0; i<6; i++) { if(msBitmap[i]!=NULL) { delete msBitmap[i]; } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { // TMemoryStream *msBitmap[6]; // 去掉 // int iIndex=0; // 去掉 Form1->DoubleBuffered=true; Graphics::TBitmap *bmpBuf=new Graphics::TBitmap; bmpBuf->Width=Image1->Width; bmpBuf->Height=Image1->Height; msBitmap[iIndex]->Position=0; bmpBuf->LoadFromStream(msBitmap[iIndex]); SetStretchBltMode(bmpBuf->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); bmpBuf->Canvas->CopyMode=cmSrcCopy; bmpBuf->Canvas->StretchDraw(Rect(0, 0, bmpBuf->Width, bmpBuf->Height), bmpBuf); SetStretchBltMode(Image1->Canvas->Handle, STRETCH_HALFTONE | STRETCH_ANDSCANS | STRETCH_ORSCANS); Image1->Canvas->CopyMode=cmSrcCopy; Image1->Canvas->CopyRect(Rect(0, 0, Image1->Width, Image1->Height), bmpBuf->Canvas, Rect(0, 0, bmpBuf->Width, bmpBuf->Height)); Image1->Update(); iIndex++; if(iIndex>=6) { iIndex=0; } delete bmpBuf; } visuala 你好: (1)是的,小弟我有一行程式碼少加了 "[i]" 而造成錯誤,非常不好意思,在我 第一篇回應你的文章裡面已經更正 (標示為紅色) (2)另外,你必須把相關的變數,設為全域變數,否則是無法執行的,在我第一 篇回應你的文章裡面已經有註明 (標示為紅色) (3)如果你要載入的檔案為 1.bmp, 2.bmp,..., 6.bmp 共六個檔案,那要先在你 的 Project 的目錄下先檢查有沒有這六個檔案,不然執行的時候也會造成錯 誤的 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
visuala
一般會員 發表:33 回覆:39 積分:14 註冊:2003-04-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |