2012-10-03 35 views
0

我試圖做一個PictureBox跨WinForm的,它甚至看起來光滑的唯一辦法順利地是,如果我用一個定時器,每1微秒降低像素速度爲1個像素,即使這樣在PictureBox的運動慢。C# - 我如何使用微秒?

如何使用微秒,使PictureBox的快得多移動,同時仍然保持平滑的水平移動時?

+1

你確定你的意思是微秒(10^-6秒)或毫秒(10^-3秒)嗎? –

+0

他顯然意味着毫 –

+0

@dreamlax讓不下車話題,你知道他是什麼意思 –

回答

4

首先,我不知道你的問題,所以也許這不會有幫助。

時間安排是一個棘手的問題。首先所有.net定時器的分辨率都在毫秒級以下,因此您無法確保系統使用某種類型的高分辨率定時器將您退出。 .net秒錶使用底層的高分辨率定時器,但沒有回調機制,因此您需要使用不同的線程和輪詢來構建自己的自我。也就是說,您可能想要以不同的方式查看動畫,然後移動一個圖片框,例如使用位blt或使低級別的顏料過載。

1

我想像跨越一個形式移動的控制是一個相當慢的操作;所以這並不是說你的計時器不夠細膩,反正它會閃爍。而不是移動圖片框,您可以將圖片框中的任何內容繪製到Paint事件中的表單背景上,而是在計時器滴答時更改繪製的位置。通過這種方式,您可以利用double buffering之類的功能獲得更流暢的動畫效果。你會發現在這種情況下,即使是40ms(25Hz刷新)這樣的比較大的時間間隔也足夠了。