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

畫面會有干擾紋 , 可能是沒有跟畫面同步的問題 ..

尚未結案
weme
一般會員


發表:1
回覆:2
積分:0
註冊:2005-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-04 19:07:46 IP:203.70.xxx.xxx 未訂閱
畫面會有干擾紋 , 可能是沒有跟畫面同步的問題 .. 我的timer的intvalue = 50 畫面會有雜訊 我想可能是 沒有跟畫面同步... 是嗎? 能夠指導一下 如何改善嗎 .... 以下是我的程式碼 void __fastcall TForm1::Timer1Timer(TObject *Sender) { HDC ScreenDC =GetDC(0); POINT pt; GetCursorPos(&pt); Label1->Caption = "X:" AnsiString(pt.x) " Y:" AnsiString(pt.y) ; StretchBlt(Image1->Canvas->Handle,0,0,80,80, ScreenDC,pt.x,pt.y,40,40,SRCCOPY); Image1->Refresh() ; ReleaseDC(0,ScreenDC); } weme
------
weme
weme
一般會員


發表:1
回覆:2
積分:0
註冊:2005-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-04 19:12:19 IP:203.70.xxx.xxx 未訂閱
補充 這是一個類似 螢幕放大鏡 的程式 麻煩各位高手 指導 .... weme
------
weme
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-04 21:41:21 IP:59.115.xxx.xxx 未訂閱
weme 您好:    不妨將 Timer 的 Interval 設小一點,例如 50,這樣子操作起來的視覺感受可能會較為平滑些,另外可以在 Form 的 OnCreate 事件中設定 Image1 底層物件的 DoubleBuffered 為 true,應該能改善顯示的效果,如果您的 Image1 是直接放在 Form 上面,那麼您可以這麼設定:
Form1->DoubleBuffered = true;
另外;您在 Timer 中重覆不斷的宣告與清除 HDC 似乎也沒有必要,我將您的程式改寫如下,執行起來的效果還算可以,您參考看看:
HDC ScreenDC;
POINT pt;    void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ScreenDC = GetDC(0);
    Form1->DoubleBuffered = true;
}    void __fastcall TForm1::FormDestroy(TObject *Sender)
{
    ReleaseDC(0,ScreenDC);
}    void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    GetCursorPos(&pt);
    Label1->Caption = "X:"   AnsiString(pt.x)   " Y:"   AnsiString(pt.y);
    StretchBlt(Image1->Canvas->Handle, 0, 0, 80, 80,
                ScreenDC, pt.x, pt.y, 40, 40, SRCCOPY);
    Image1->Refresh();
}
7 天天敲鍵盤 v 時時按滑鼠 8
系統時間:2024-05-11 19:50:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!