void Advance() { alpha -= 0.01; if (alpha < 0) { alpha = 0; } if (brush == null) { brush = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255)); } if (label == null) { label = FallingThings.MakeSimpleLabel(text, new Rect(0, 0, 0, 0), brush); } brush.Opacity = Math.Pow(alpha, 1.5); label.Foreground = brush; fontSize += fontGrow; label.FontSize = fontSize; Rect rRendered = new Rect(label.RenderSize); label.SetValue(Canvas.LeftProperty, center.X - rRendered.Width / 2); label.SetValue(Canvas.TopProperty, center.Y - rRendered.Height / 2); }
private Label GetLabel() { if (brush == null) { brush = new SolidColorBrush(color); } if (label == null) { label = FallingThings.MakeSimpleLabel(text, boundsRect, brush); if (doScroll) { label.FontSize = Math.Max(20, boundsRect.Height / 30); label.Width = 10000; } else { label.FontSize = Math.Min(Math.Max(10, boundsRect.Width * 2 / text.Length), Math.Max(10, boundsRect.Height / 20)); } label.VerticalContentAlignment = VerticalAlignment.Bottom; label.HorizontalContentAlignment = (doScroll) ? HorizontalAlignment.Left : HorizontalAlignment.Center; label.SetValue(Canvas.LeftProperty, offset * boundsRect.Width); } renderedRect = new Rect(label.RenderSize); if (doScroll) { offset -= 0.0015; if (offset * boundsRect.Width < boundsRect.Left - 10000) { return(null); } label.SetValue(Canvas.LeftProperty, offset * boundsRect.Width + boundsRect.Left); } return(label); }