我已經嘗試了多種使用wingdi在winapi視窗上渲染簡單影片的方法,并意識到即使對于原始影片它也相當慢,并且如果我SendMessageW在這個視窗沒有事件時通過垃圾郵件來實作它會不一致。所以我認為我應該以固定的時間間隔安排它,而不是在我可以渲染的時候進行渲染,從而提高影片的幀速率和質量。我現在想知道這是否可以通過在 windows 上注冊一些回呼來完成,或者沒有這樣的功能,我必須旋轉另一個執行緒來充當計時器?這通常是一個更好的主意嗎?當事件觸發重繪只是不會削減它時,做這種事情的普遍接受的方式是什么?
uj5u.com熱心網友回復:
關于預定的影片,如果我沒記錯的話,有SetTimer()和。KillTimer()無論如何,“計時器”就是您要尋找的東西。
關于計時器回呼中的繪畫,不要。相反,調整影片引數(位置、顏色等)并使用InvalidateRect(). 這將反過來呼叫常規繪圖事件處理程式。不同之處在于,如果您的視窗被隱藏或最小化,這不會浪費任何 CPU。此外,無論如何,當視窗未隱藏時,繪圖事件處理程式必須能夠繪制正確的視窗內容。
有一個派生版本,您可以在記憶體 DC 中更新影像,并且僅在繪圖事件處理程式中對視窗進行 blit。不過,目前尚不清楚您的情況是否有必要。僅當繪圖需要較長時間并且您希望保持 UI 回應時。
uj5u.com熱心網友回復:
好吧,我通常很幸運,我在 MSDN 上找到了這篇文章,它有一個很好的例子。如果有人有同樣的問題,把它放在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/417693.html
標籤:
