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

請教OnPaint與Fresh 的用法

尚未結案
piemomoka
一般會員


發表:8
回覆:10
積分:3
註冊:2003-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-19 16:18:56 IP:157.16.xxx.xxx 未訂閱
請教各位前輩 我要將PaintBox設置在ScrollBox中,Run了之後,按下Button會在PaintBox中畫圖表,因為圖會消失,所以把Code寫在OnPaint中 void __fastcall TForm1::FormResize(TObject *Sender) { ScrollBox1->Height=Form1->ClientHeight*8/10; ScrollBox1->Width=Form1->ClientWidth*8/10; ScrollBox1->Top=(Form1->ClientHeight - ScrollBox1->Height)/4; ScrollBox1->Left=(Form1->ClientWidth - ScrollBox1->Width)/6; PaintBox1->Top=20; PaintBox1->Left=20; PaintBox1->Width=980; PaintBox1->Height=600; } //------------------------------------------------------------------- void __fastcall TForm1::OnPaint(TObject *Sender) { long double PBW=PaintBox1->Width; long double PBH=PaintBox1->Height; PaintBox1->Canvas->Brush->Color=clWhite; PaintBox1->Canvas->Rectangle(0,0,PBW,PBH); PaintBox1->Canvas->Pen->Width=2; PaintBox1->Canvas->Pen->Color=clBlack; PaintBox1->Canvas->MoveTo(100,50); PaintBox1->Canvas->LineTo(100,500); PaintBox1->Canvas->LineTo(900,500); } 還有Event的設定是不是有錯,可以幫我看一下嗎? PaintBox1 OnPaint OnPaint Button1 OnClick OnPaint Form1 OnCreat FormResize OnResize FormResize 這樣的狀態下執行之後不用按Button1圖就自己跑出來了 人家告訴我 "要在按Button1之後再畫圖的話,在OnPaint加上PaintBox1->Refresh()" 可是我不知道該怎麼加,加在哪裡 麻煩各位前被指導一下 謝謝 發表人 - taishyang 於 2003/12/19 16:53:53
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-25 14:48:01 IP:210.243.xxx.xxx 未訂閱
piemomoka您好: 我想您的意思就是開始時PaintBox是空的(塗成白色),在按下button後才把 線畫出來...而且拉動SrollBox時能重繪所畫出的圖形 不知我是否會錯意 如果是我說的這樣,以下倒是個辦法: 使用旗標控制 class="code"> private: // User declarations bool IsPaint; cpp檔
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{//旗標初始
IsPaint = false;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::FormResize(TObject *Sender)
{//這段是您寫的
    ScrollBox1->Height=Form1->ClientHeight*8/10;
    ScrollBox1->Width=Form1->ClientWidth*8/10;
    ScrollBox1->Top=(Form1->ClientHeight - ScrollBox1->Height)/4;
    ScrollBox1->Left=(Form1->ClientWidth - ScrollBox1->Width)/6;
    PaintBox1->Top=20;
    PaintBox1->Left=20;
    PaintBox1->Width=980;
    PaintBox1->Height=600;
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{//畫圖的事情交給button,畫完後旗標為真
    PaintBox1->Canvas->Pen->Width=2;
    PaintBox1->Canvas->Pen->Color=clBlack;
    PaintBox1->Canvas->MoveTo(100,50);
    PaintBox1->Canvas->LineTo(100,500);
    PaintBox1->Canvas->LineTo(900,500);
    IsPaint = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{//OnPaint事件畫背景,並於旗標為真時畫出圖形
    long double PBW=PaintBox1->Width;
    long double PBH=PaintBox1->Height;
    PaintBox1->Canvas->Brush->Color=clWhite;
    PaintBox1->Canvas->Rectangle(0,0,PBW,PBH);
    if (IsPaint == true)
    {
        PaintBox1->Canvas->Pen->Width=2;
        PaintBox1->Canvas->Pen->Color=clBlack;
        PaintBox1->Canvas->MoveTo(100,50);
        PaintBox1->Canvas->LineTo(100,500);
        PaintBox1->Canvas->LineTo(900,500);
    }
} 
這樣就能辦到了... 不過我覺得這不是正規做法啦,有作弊之嫌< > 還是請您參考看看< > 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
piemomoka
一般會員


發表:8
回覆:10
積分:3
註冊:2003-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-25 17:54:36 IP:157.16.xxx.xxx 未訂閱
我出運了啦 謝謝您
piemomoka
一般會員


發表:8
回覆:10
積分:3
註冊:2003-12-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-25 18:07:26 IP:157.16.xxx.xxx 未訂閱
Dear ENIX007 不好意思,我看錯了 我執行了程式之後
piemomoka
一般會員


發表:8
回覆:10
積分:3
註冊:2003-12-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-25 18:24:12 IP:157.16.xxx.xxx 未訂閱
Dear ENIX007 真是很不好意思,我好像不小心按錯什麼 導致剛剛的錯誤,照您所說的方法 解決了我的問題了。 再次謝謝您
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-25 18:28:09 IP:210.243.xxx.xxx 未訂閱
piemomoka您好: 能幫得上忙我很高興 不過奇怪了,按照我之前作的方法,拉動
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-25 18:30:06 IP:210.243.xxx.xxx 未訂閱
呵呵...才剛Post上去就... 問題解決了就好... 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
系統時間:2024-05-29 6:35:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!