HI
I am new to WPF and I am looking for a solution to scroll text in a WPF application,
I tried some animation but I have a clipping problem
I found a possible solution to my problem in the following place:
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/8330696e-7715-479e-8027-8d9925579a17/
but it is not clear to me what the variables TranslateTransformName, scrollfactor and tt should be..
Can somebody look at the code and help me to figure it out?
thanks
Wally
this is the code there: Code Block
<p class=MsoNoSpacing>< <span class=SpellE>Viewbox</span> <span class=SpellE>OpacityMask</span> ="{x <span class=GramE>:Null</span> }" <span class=SpellE>HorizontalAlignment</span> ="Center" <span class=SpellE>VerticalAlignment</span> ="Stretch" Width="Auto" Height="Auto" <span class=SpellE>RenderTransformOrigin</span> ="0.5,0.5" x:Name="container" Stretch="Uniform" <span class=SpellE>StretchDirection</span> ="Both"> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> < <span class=SpellE>Viewbox.RenderTransform</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> < <span class=SpellE>TransformGroup</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>ScaleTransform</span> <span class=SpellE>ScaleX</span> ="1" <span class=SpellE>ScaleY</span> ="1"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>SkewTransform</span> <span class=SpellE>AngleX</span> ="0" <span class=SpellE>AngleY</span> ="0"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>RotateTransform</span> Angle="0"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>TranslateTransform</span> X="640" Y="0"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> </ <span class=SpellE>TransformGroup</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> </ <span class=SpellE>Viewbox.RenderTransform</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> < <span class=SpellE>TextBlock</span> <span class=SpellE>RenderTransformOrigin</span> ="0.5 <span class=GramE>,0.5</span> " <span class=SpellE>HorizontalAlignment</span> ="Center" x:Name=" <span class=SpellE>tb</span> " <span class=SpellE>VerticalAlignment</span> ="Center" Width="Auto" Height="Auto" <span class=SpellE>FontSize</span> ="50" <span class=SpellE>TextWrapping</span> =" <span class=SpellE>NoWrap</span> " Background="{x:Null}" Foreground="#FFFFFFFF" Padding="0,0,0,10" Text="0"> </p> <p class=MsoNoSpacing></p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> < <span class=SpellE>TextBlock.RenderTransform</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>TransformGroup</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>ScaleTransform</span> <span class=SpellE>ScaleX</span> ="1" <span class=SpellE>ScaleY</span> ="1"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>SkewTransform</span> <span class=SpellE>AngleX</span> ="0" <span class=SpellE>AngleY</span> ="0"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>RotateTransform</span> Angle="0"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> < <span class=SpellE>TranslateTransform</span> X="640" Y="0"/> </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'> </span> </ <span class=SpellE>TransformGroup</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> </ <span class=SpellE>TextBlock.RenderTransform</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> </ <span class=SpellE>TextBlock</span> > </p> <p class=MsoNoSpacing> <span style='mso-spacerun:yes'></span> </ <span class=SpellE>Viewbox</span> > </p> <p class=MsoNoSpacing> <o:p> </o:p> </p> <p class=MsoNoSpacing> <o:p> </o:p> </p> <p class=MsoNoSpacing> <o:p> </o:p> </p> <p class=MsoNoSpacing> <o:p> </o:p> </p>
Code Block private void StartAnimation(object sender, EventArgs e) { tb.Text = news;
MainWindow.UpdateLayout(); Double timeToTake = (MainWindow.Width + tb.ActualWidth) / scrollfactor; this.tb.RenderTransform = tt; Storyboard sb = new Storyboard(); DoubleAnimation daX = new DoubleAnimation(MainWindow.Width, (0.0 - tb.ActualWidth), new Duration(TimeSpan.FromSeconds(timeToTake))); daX.RepeatBehavior = RepeatBehavior.Forever; Storyboard.SetTargetName(daX, TranslateTransformName); Storyboard.SetTargetProperty(daX, new PropertyPath(TranslateTransform.XProperty)); sb.Children.Add(daX); sb.Begin(this.tb); }
http://jobijoy.blogspot.com/2008/08/wpf-custom-controls-marquee-control.html
You can check the idea behind this Marquee control. When you say to scroll the text inside the textBlock.. think about scrolling a long textblock inside a marqueee control. This control is a ContentControl which can scroll any Content inside.