還沒有答案,當然有WPF開發人員的數量有人看到了這個問題?
在此期間,我調查了一些更多,並遇到Timeline.DesiredFrameRate財產。
隨着我的顯示器運行在50hz垂直刷新,我試圖將其設置爲50 FPS,希望這會帶來同步。不幸的是,這對撕裂沒有影響。
但是,我必須將它應用到我使用BeginAnimation()創建的(在代碼中)的單個特定動畫。我不確定這將如何影響「全球」幀速率。
相反,我希望需要在更全局的層面上做到這一點,比如在視口上,但是我無法在視口對象上找到DesiredFramerate屬性。
另一個需要關注的領域是RenderCapability.Tier,但我還沒有時間仔細查看。
[更新]
沒有解決方案,但一個有用的提示。要全局設置DesiredFramerate(即在視口中所有的動畫),您可以覆蓋PropertyMetadata爲 Timeline.DesiredFrameRateProperty依賴屬性:
// Set the global desired framerate to 50 frames per second
Startup += delegate(object sender, StartupEventArgs e)
{
Timeline.DesiredFrameRateProperty.OverrideMetadata(typeof(Timeline),
new PropertyMetadata(50));
};
最好是把這個標準WPF應用程序類的構造函數。
不幸的是,這並沒有解決我的問題,因爲即使將其設置爲FPS,也不能使用顯示器v-sync同步足夠準確。
雖然知道這一點很方便,特別是如果您的移動動畫緩慢並想通過將FPS設置爲比默認60fps低很多來節省CPU使用率。
[更新]
設置DesireFrameRate一些非常高的值,如100 +似乎減少但不能消除閃爍。然而,一個很大的缺點是CPU(在我的4臺PC上)達到35%。
來源
2009-02-14 11:42:27
Ash
我相信微軟的反應是它已經固定在Vista上。所以,轉到Vista。我自己搬到了Linux ... – 2009-02-10 14:05:59