procedure TForm1.FormPaint(Sender: TObject);
var
g: TGPGraphics;
begin
g := TGPGraphics.Create(Canvas.Handle); g.DrawImage(img3, MakeRect(rt3));
g.Free;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
begin
nl:=(nl mod 360) +10;
img3.Free;
img3:=TGPImage.Create('新建檔案夾\'+inttostr(nl)+'.png');
Repaint;
inc(ll);
nl:=(nl+10) mod 360;
if ll>=200 then begin
timer3.Enabled:=false;
ll:=0;
end;
end;
png的圖片是每一度一張 總共360張
使用這段代碼模擬秒鐘加速轉動效果,發現cpu占太高,請教各位有么有好的實作方法
uj5u.com熱心網友回復:
如果你只是為了速度, 可以把這些圖片一下加載到記憶體, 定期更換就好了uj5u.com熱心網友回復:
360張?第一次見到這方法。。。人家都將圖片旋轉再貼圖的
uj5u.com熱心網友回復:
如果LZ堅持要用這種多圖切換的方案,想優化CPU占用,建議“以空間換時間”,啟動時一次性把所有圖片都加載到記憶體中,而不是每次換圖都去讀檔案(磁盤I/O的性能開銷太大了)。具體的做法可以一次創建360個TGPGraphics物件把圖片全部加載進去,切換時對號加載就行。uj5u.com熱心網友回復:
然而比較不那么坑爹的做法應該是:時鐘背景用一張圖片,指標則動態繪畫上去,或是把一個指標圖片做旋轉變換后再貼上去。uj5u.com熱心網友回復:
原先試過一張圖片旋轉變化 但發現影像在抖動
uj5u.com熱心網友回復:
留下你的郵箱,給你一個例子。uj5u.com熱心網友回復:
[email protected] 謝謝
uj5u.com熱心網友回復:
代碼已發送到你郵箱,請查收。uj5u.com熱心網友回復:
每40毫秒動一幀還是會占cpu
uj5u.com熱心網友回復:
里面的“讀檔案方式”,占cpu不超3%,不知道你要求多少才算不“占cpu”uj5u.com熱心網友回復:
用Canvas畫,自己計算指標位置uj5u.com熱心網友回復:
呵呵,看來LZ想要的是ExitWindowsEx(EWX_SHUTDOWN,0),這樣就不會占用你的CPU了。
uj5u.com熱心網友回復:
關機?JPEXE你瘋啦。。uj5u.com熱心網友回復:
自己使用Canvas畫針吧。uj5u.com熱心網友回復:
去下載個Raize控制元件 里面有時鐘面板控制元件轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157120.html
下一篇:此問題怎樣解決???
