嗨,我正在嘗試制作“flash 影片”,螢屏會在幾分之一秒內變白,然后恢復正常。
這是我的代碼:
private void QuickFallAnimation ()
{
plGame.BackColor = Color.White;
Thread.Sleep(50);
plGame.BackColor = Color.Black;
}
問題是背景顏色永遠不會變成白色。即使應用程式的其余部分暫停 50 毫秒,它也只是保持黑色。任何人都可以幫忙嗎?
uj5u.com熱心網友回復:
問題的原因是您將 UI 執行緒置于睡眠狀態。睡眠時,UI 被阻止并且無法重新渲染。永遠不要阻塞 UI 執行緒。
更改代碼以使用 async/await 應該可以解決問題:
private async Task QuickFallAnimation ()
{
plGame.BackColor = Color.White;
await Task.Delay(50);
plGame.BackColor = Color.Black;
}
您可能還需要手動觸發重新渲染,例如plGame.Invalidate();
計時器也可以做到這一點。Task.Delay 只是一個定時器的包裝器,有時使用起來很方便。但對于更復雜的影片,計時器可能更合適。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446108.html
下一篇:滾動上的移動影像
