MarqueeLabel.cs
changeset 11 de55741d90f0
parent 8 5129c03ab7ba
child 15 452e5c0c98da
     1.1 --- a/MarqueeLabel.cs	Tue Jul 08 21:49:30 2014 +0200
     1.2 +++ b/MarqueeLabel.cs	Wed Jul 09 11:06:46 2014 +0200
     1.3 @@ -23,18 +23,21 @@
     1.4          [Description("Separator in our scrolling loop.")]
     1.5          [DefaultValue(" | ")]
     1.6          [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
     1.7 +        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
     1.8          public string Separator { get; set; }
     1.9  
    1.10          [Category("Behavior")]
    1.11          [Description("How fast is our text scrolling, in pixels per second.")]
    1.12          [DefaultValue(32)]
    1.13          [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
    1.14 +        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    1.15          public int PixelsPerSecond { get; set; }
    1.16  
    1.17          [Category("Behavior")]
    1.18          [Description("Use an internal or an external timer.")]
    1.19          [DefaultValue(true)]
    1.20          [Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
    1.21 +        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    1.22          public bool OwnTimer
    1.23          {
    1.24              get
    1.25 @@ -139,6 +142,7 @@
    1.26          private StringFormat GetStringFormatFromContentAllignment(ContentAlignment ca)
    1.27          {
    1.28              StringFormat format = new StringFormat();
    1.29 +            format = StringFormat.GenericTypographic;
    1.30              switch (ca)
    1.31              {
    1.32                  case ContentAlignment.TopCenter:
    1.33 @@ -181,6 +185,7 @@
    1.34  
    1.35              format.FormatFlags |= StringFormatFlags.NoWrap;
    1.36              format.FormatFlags |= StringFormatFlags.NoClip;
    1.37 +            format.FormatFlags |= StringFormatFlags.MeasureTrailingSpaces;
    1.38              format.Trimming = StringTrimming.None;
    1.39  
    1.40              return format;
    1.41 @@ -197,12 +202,14 @@
    1.42  
    1.43          private void HandleTextSizeChange()
    1.44          {
    1.45 +            //For all string measurements and drawing issues refer to the following article:
    1.46 +            // http://stackoverflow.com/questions/1203087/why-is-graphics-measurestring-returning-a-higher-than-expected-number
    1.47              //Update text size according to text and font
    1.48              Graphics g = this.CreateGraphics();
    1.49              g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit;
    1.50 -            iTextSize = g.MeasureString(Text, Font);
    1.51 -            iSeparatorSize = g.MeasureString(Separator, Font);
    1.52              iStringFormat = GetStringFormatFromContentAllignment(TextAlign);
    1.53 +            iTextSize = g.MeasureString(Text, Font, Int32.MaxValue, iStringFormat);
    1.54 +            iSeparatorSize = g.MeasureString(Separator, Font, Int32.MaxValue, iStringFormat);
    1.55  
    1.56              if (NeedToScroll())
    1.57              {