|
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;
namespace System.Drawing.Html
{
/// <summary>
/// Provides HTML rendering on the tooltips
/// </summary>
public class HtmlToolTip
: ToolTip
{
#region Fields
private InitialContainer container;
#endregion
#region Ctor
public HtmlToolTip()
{
OwnerDraw = true;
Popup += new PopupEventHandler(HtmlToolTip_Popup);
Draw += new DrawToolTipEventHandler(HtmlToolTip_Draw);
}
#endregion
void HtmlToolTip_Popup(object sender, PopupEventArgs e)
{
string text = this.GetToolTip(e.AssociatedControl);
string font = string.Format("font: {0}pt {1}", e.AssociatedControl.Font.Size, e.AssociatedControl.Font.FontFamily.Name);
//Create fragment container
container = new InitialContainer("<table class=htmltooltipbackground cellspacing=5 cellpadding=0 style=\"" + font + "\"><tr><td style=border:0px>" + text + "</td></tr></table>");
container.SetBounds(new Rectangle(0, 0, 10, 10));
container.AvoidGeometryAntialias = true;
//Measure bounds of the container
using (Graphics g = e.AssociatedControl.CreateGraphics())
{
container.MeasureBounds(g);
}
//Set the size of the tooltip
e.ToolTipSize = Size.Round(container.MaximumSize);
Console.WriteLine("Ttip: " + container.MaximumSize.ToString());
}
void HtmlToolTip_Draw(object sender, DrawToolTipEventArgs e)
{
e.Graphics.Clear(Color.White);
if (container != null)
{
//Draw HTML!
container.Paint(e.Graphics);
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
- I've been programming Windows and Web apps since 1997.
- My greatest concern nowadays is product, user interface, and usability.
- TypeScript / React expert
@geeksplainer