滑鼠框選時會像網路lag一樣很慢 |
尚未結案
|
vittel
一般會員 發表:13 回覆:14 積分:5 註冊:2003-09-19 發送簡訊給我 |
新手發問..請各位多多指教.. 我用TImage讀進一張圖之後..想在圖上做框選的動作..
我將另一張透明的TImage加在原來的圖上..並將框框畫在上面..
但是框框的動作很不流暢..我動得稍微快一點..框框就跟不上滑鼠了..
我參考了http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34115這篇文章和範例..做法都一樣..DoubleBuffered也設為true..
但是就是沒辦法改善..
原因應該是我讀的圖比較大..1024x768的..
想請教前輩們有別的方法嗎..??
謝謝...
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
vittel
一般會員 發表:13 回覆:14 積分:5 註冊:2003-09-19 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
vittel您好:
因為一張1024*768大小的BMP約2MB每此讀取都會消耗相當大的記憶體
所以會LAG應該是正常現象,我測試後的結果也是如此P4 2G 512M RAM
不過有一個改善的方式,有改善但效果也是有限(就是將背景換成JPG)
bool IsMouseDown; TPoint start,end,newend; Graphics::TBitmap *BMP=new Graphics::TBitmap(); TJPEGImage *JPG=new TJPEGImage(); void __fastcall TForm1::FormCreate(TObject *Sender) { Form1->DoubleBuffered=true; JPG->LoadFromFile("1.jpg"); BMP->Assign(JPG); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { IsMouseDown=true; start=TPoint(X,Y); } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if (IsMouseDown) { Image1->Picture->Assign(BMP); X=(X>Image1->Width)?Image1->Width:X; Y=(Y>Image1->Height)?Image1->Height:Y; newend=TPoint(X,Y); Image1->Canvas->Pen->Color=clYellow; Image1->Canvas->Brush->Style=bsClear; Image1->Canvas->Rectangle(start.x,start.y,newend.x,newend.y); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { IsMouseDown=false; end=TPoint(X,Y); } //---------------------------------------------------------------------------順心 > |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 新手發問..請各位多多指教.. 我用TImage讀進一張圖之後..想在圖上做框選的動作.. 我將另一張透明的TImage加在原來的圖上..並將框框畫在上面.. 但是框框的動作很不流暢..我動得稍微快一點..框框就跟不上滑鼠了.. 我參考了http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34115這篇文章和範例..做法都一樣..DoubleBuffered也設為true.. 但是就是沒辦法改善.. 原因應該是我讀的圖比較大..1024x768的.. 想請教前輩們有別的方法嗎..?? 謝謝...vittel 你好: 小弟我已經針對 Rectangle 做了小小的修正,麻煩你再重新下載一次,試試看 情況有沒有改善一點點呢??
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
vittel
一般會員 發表:13 回覆:14 積分:5 註冊:2003-09-19 發送簡訊給我 |
引言:引言: 新手發問..請各位多多指教.. 我用TImage讀進一張圖之後..想在圖上做框選的動作.. 我將另一張透明的TImage加在原來的圖上..並將框框畫在上面.. 但是框框的動作很不流暢..我動得稍微快一點..框框就跟不上滑鼠了.. 我參考了http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34115這篇文章和範例..做法都一樣..DoubleBuffered也設為true.. 但是就是沒辦法改善.. 原因應該是我讀的圖比較大..1024x768的.. 想請教前輩們有別的方法嗎..?? 謝謝...vittel 你好: 小弟我已經針對 Rectangle 做了小小的修正,麻煩你再重新下載一次,試試看 情況有沒有改善一點點呢?? >>< face="Verdana, Arial, Helvetica"> 謝謝兩位這麼短時間就有了回應..感激不盡.. 可是..再試了一下..還是一樣..沒什麼變.. 換成 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
|
vittel
一般會員 發表:13 回覆:14 積分:5 註冊:2003-09-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |