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

如何指定Image元件讓副程式在指定的Image上畫圖?

尚未結案
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-28 03:39:30 IP:220.135.xxx.xxx 未訂閱
大家好: 我寫一個副程式專門將輸入的圖畫出來.. 請問我要把圖畫在指定的Image元件上 該怎麼傳參數給副程式呢? void Show(int h,int w, ???) { 畫圖; ???->Reflesh(); } 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! 發表人 - smilebye 於 2004/10/28 13:46:15
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 10:50:56 IP:220.135.xxx.xxx 未訂閱
引言: 大家好: 我寫一個副程式專門將輸入的圖畫出來.. 請問我要把圖畫在指定的Image元件上 該怎麼傳參數給副程式呢? void Show(int h,int w, ???) { 畫圖; ???->Reflesh(); }
你好: 之前有用過這樣的方式, 輸入 1.二維灰階影像指標, 2.影像寬 3.影像高
void display2(byte **img,int width,int height)
{
 Graphics::TBitmap* bitmap = new Graphics::TBitmap;
 int x,y;
 unsigned char clr;      //---Give Picture Size to Bitmap
 bitmap->Width=width;
 bitmap->Height=height;     for(x=0;x<(bitmap->Width);x  )
  for(y=0;y<(bitmap->Height);y  )
    {
     clr=img[y][x];
     //paste on bitmap object to show
     bitmap->Canvas->Pixels[x][y]=(TColor)RGB(clr,clr,clr);
    }
 Form1->Image2->Canvas->Draw(0,0,bitmap);
 delete bitmap;
}
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-28 13:23:03 IP:220.135.xxx.xxx 未訂閱
JerryKuo你好: 我想你可能誤會我的意思了,我想要問的是能不能指定副程式說把圖秀在哪個Image元件上.. 例如這次我要在Form1上面的Image1元件上秀出圖 下次我要在Form1上面的Image2元件上秀出圖.. (就是隨便我指定一個Image元件,副程式就在指定的Image元件上面把圖顯示出來).. 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-28 17:39:56 IP:220.135.xxx.xxx 未訂閱
你好:    是這樣嗎?改變focus,來達成切換輸出的Image1物件    
static focus;    void display2(byte **img,int width,int height)
{
 Graphics::TBitmap* bitmap = new Graphics::TBitmap;
 int x,y;
 unsigned char clr;      //---Give Picture Size to Bitmap
 bitmap->Width=width;
 bitmap->Height=height;     for(x=0;x<(bitmap->Width);x  )
  for(y=0;y<(bitmap->Height);y  )
    {
     clr=img[y][x];
     //paste on bitmap object to show
     bitmap->Canvas->Pixels[x][y]=(TColor)RGB(clr,clr,clr);
    }

 switch (focus)
 {
    case 1:
      Form1->Image1->Canvas->Draw(0,0,bitmap);
      break;
    case 2:
      Form1->Image2->Canvas->Draw(0,0,bitmap);
      break;
    default:
      Form1->Image1->Canvas->Draw(0,0,bitmap);
 }     delete bitmap;
}
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-28 18:45:01 IP:163.13.xxx.xxx 未訂閱
JerryKuo你好: 你說的那個想法是可行的我怎沒想到呢,可是我的想法如下不知道為何有錯誤 < class="code"> void __fastcall TForm1::Button1Click(TObject *Sender) { Show(Image1);//指定副程式將圖畫在Image1元件上 } //-------------- void Show(TImage* a) { a->Reflesh();//畫圖 } 出現錯誤如下:[C Error] Unit1.cpp(23): E2227 Extra parameter in call to _fastcall TCustomForm::Show() 而我把Show()宣告成
 class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TButton *Button1;
        TImage *Image1;
        void __fastcall Button1Click(TObject *Sender);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
        void __fastcall Show(TImage*);//宣告在這邊就可以
};
void __fastcall TForm1::Show(TImage* a)
{
} 
為什麼呢? 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! 發表人 - smilebye 於 2004/10/28 18:51:59
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-29 09:43:26 IP:220.135.xxx.xxx 未訂閱
不太會class,但我以為Image1是Form1裡的一個物件,所以Image1不允許 被外面的function使用。show()不能直接使用Image1的物件. 當我們把show()宣告在Form1 class裡,此時show()就是Form1內部的 function,才可以調用Image物件。不過我不建議傳入Image物件,最好單純 傳入二維影像陣列,或是用TBitmap取代TImage物件。 發表人 - jerrykuo 於 2004/10/29 10:50:58
zhangyaohu
一般會員


發表:7
回覆:8
積分:8
註冊:2004-06-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-29 10:39:48 IP:211.162.xxx.xxx 未訂閱
Show(TImage*)是Form1內部的function,在實現的時候應加上TForm1::。    頭文件(.hpp)    
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TButton *Button1;
        TImage *Image1;
        void __fastcall Button1Click(TObject *Sender);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
        void __fastcall Show(TImage*);//宣告在這邊就可以
};
void __fastcall TForm1::Show(TImage* a)
{
}//紅色部分應去掉,會引起混亂。
實現文件(.cpp)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Show(Image1);//指定副程式將圖畫在Image1元件上
}
//--------------
void __fastcall TForm1::Show(TImage* a)//加入紅色部分
{
 a->Reflesh();//畫圖
}
發表人 - zhangyaohu 於 2004/10/29 10:47:52
smilebye
一般會員


發表:21
回覆:33
積分:10
註冊:2004-01-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-29 11:29:02 IP:220.135.xxx.xxx 未訂閱
zhangyaohu你好: 謝謝你的回答.紅色部分要去掉...那邊是寫在.cpp啦我沒寫清楚,所以不用去掉^^ 因為JerryKuo的解答比較符合我的問題< > 所以我投給他嚕,不過還是謝謝你抽空回答..< > 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
系統時間:2024-07-03 19:35:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!