在C#中,對於黑色背景(屏幕保護程序),每20秒持續1秒鐘淡入淡出圖像的最佳方式是什麼?淡入/淡出圖像的最佳方式
(約350x130px的圖片)。
我需要一個簡單的屏幕保護程序,它將在一些低級別計算機上運行(xp)。
現在,我對使用一個PictureBox這種方法,但實在是太慢了:
private Image Lighter(Image imgLight, int level, int nRed, int nGreen, int nBlue)
{
Graphics graphics = Graphics.FromImage(imgLight);
int conversion = (5 * (level - 50));
Pen pLight = new Pen(Color.FromArgb(conversion, nRed,
nGreen, nBlue), imgLight.Width * 2);
graphics.DrawLine(pLight, -1, -1, imgLight.Width, imgLight.Height);
graphics.Save();
graphics.Dispose();
return imgLight;
}
你應該最好使用兩個定時器。一會被設置爲20秒,並通過啓動第二個計時器來觸發淡入淡出。第二個計時器將被設置爲一個很短的時間(例如0.1s),並將增加/減少不透明度,直到淡入淡出完成,然後停止()本身。那麼,你沒有連續運行的高頻計時器。請注意,Forms定時器是臭名昭着的不可靠的,所以使用它們可能不會很順利地淡入淡出 - 但是對於你想要的東西,大多數情況下它們可能都可以。 – 2009-12-01 22:44:28
有趣的是,兩個定時器如何,其中一個定時器在高頻率下連續運行更少,優於同一個高頻率下的單個定時器? – 2009-12-01 23:40:21