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 {