線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1187
推到 Plurk!
推到 Facebook!

再問一下貼圖的問題

尚未結案
visuala
一般會員


發表:33
回覆:39
積分:14
註冊:2003-04-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-19 22:07:19 IP:218.170.xxx.xxx 未訂閱
我現在要先讀入一些圖..然後用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-19 23:14:08 IP:61.221.xxx.xxx 未訂閱
引言: 我現在要先讀入一些圖..然後用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;    }
visuala 你好:
(1)早上不是已經回答過你了嗎?? 還有什麼問題呢??
(>>>// 請自行調整
   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=>    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
visuala
一般會員


發表:33
回覆:39
積分:14
註冊:2003-04-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-20 09:34:39 IP:218.170.xxx.xxx 未訂閱
不不不..我就是依照此宣告方式...可是還是都會有一些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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-20 09:53:22 IP:203.73.xxx.xxx 未訂閱
引言: 不不不..我就是依照此宣告方式...可是還是都會有一些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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-20 10:21:53 IP:218.170.xxx.xxx 未訂閱
多謝指導~~我會了.... 發表人 - visuala 於 2003/10/20 12:52:30
系統時間:2024-05-01 4:27:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!