using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; namespace Optimizer { class MoonTip : ToolTip { TextFormatFlags toolTipFlags = TextFormatFlags.VerticalCenter | TextFormatFlags.LeftAndRightPadding | TextFormatFlags.HorizontalCenter | TextFormatFlags.NoClipping; Font font = new Font("Segoe UI Semibold", 10f, FontStyle.Regular); public MoonTip() { this.OwnerDraw = true; this.IsBalloon = false; this.Popup += new PopupEventHandler(this.OnPopup); this.Draw += new DrawToolTipEventHandler(this.OnDraw); } private void OnPopup(object sender, PopupEventArgs e) // use this event to set the size of the tool tip { string toolTipText = (sender as ToolTip).GetToolTip(e.AssociatedControl); using (var g = e.AssociatedControl.CreateGraphics()) { var textSize = Size.Add(TextRenderer.MeasureText( g, toolTipText, font, Size.Empty, toolTipFlags), new Size(10, 10)); e.ToolTipSize = textSize; } // e.ToolTipSize = new Size(400, 400); } private void OnDraw(object sender, DrawToolTipEventArgs e) // use this event to customise the tool tip { Graphics g = e.Graphics; LinearGradientBrush b = new LinearGradientBrush(e.Bounds, Color.FromArgb(25, 25, 25), Color.FromArgb(25, 25, 25), 45f); g.FillRectangle(b, e.Bounds); g.DrawRectangle(new Pen(Options.ForegroundColor, 1), new Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width - 1, e.Bounds.Height - 1)); g.DrawString(e.ToolTipText, font, Brushes.White, new PointF(e.Bounds.X + 6, e.Bounds.Y + 6)); // top layer b.Dispose(); } } }