2014-02-20 23 views
2

我使用下面的動畫(從右到左滾動字幕)代碼: -權在WPF文本的左跑馬燈,其中文本塊的寬度大於窗口無閃爍

private void RightToLeftMarquee(TextBlock tb) 
    { 
     doubleAnimation = new DoubleAnimation(); 
     doubleAnimation.From = -tb.Width; 
     doubleAnimation.To = TickerCanvas.Width; 
     doubleAnimation.RepeatBehavior = RepeatBehavior.Forever; 
     doubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(100)); 
     Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("(Canvas.Right)")); 
     sb.Children.Add(doubleAnimation); 
     sb.Begin(tb,true); 
    } 

此代碼移動文本塊罰款當textblock的寬度小於canvas時,但是當textblock寬度大於canvas寬度時,選取框會閃爍。

回答

0

您看到的閃爍可能是由於ClearType子像素定位。您有幾種選擇,但如果將這些動畫後不會顯得那樣順利:

  • TextOptions.TextFormattingMode="Display"

    這將打開新的WPF 4.0 ClearType的算法,這將使得文本顯得更清晰。

  • UseLayoutRounding="True"

    確保WPF對齊一切到設備像素(沒有更多的模糊邊界,圖像等)

總是使用這兩種設置在根元素的任何應用程序(即所有Window s),因爲它通常會改善應用程序的外觀。

+0

hi Eli Arbel。感謝您的回答。我想知道如何在wpf中設置TextFormattingMode,因爲我無法找到TextOptions的上述屬性。 – Gaurang

+0

您正在使用哪個版本的.NET? –

+0

我正在使用.Net 4.5 – Gaurang