|
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Drawing;
namespace System.Windows.Forms;
/// <summary>
/// This class contains the information a user needs to paint the ToolTip.
/// </summary>
public class DrawToolTipEventArgs : EventArgs
{
private readonly Color _backColor;
private readonly Color _foreColor;
/// <summary>
/// Creates a new DrawToolTipEventArgs with the given parameters.
/// </summary>
public DrawToolTipEventArgs(
Graphics graphics,
IWin32Window? associatedWindow,
Control? associatedControl,
Rectangle bounds,
string? toolTipText,
Color backColor,
Color foreColor,
Font? font)
{
Graphics = graphics.OrThrowIfNull();
AssociatedWindow = associatedWindow;
AssociatedControl = associatedControl;
Bounds = bounds;
ToolTipText = toolTipText;
_backColor = backColor;
_foreColor = foreColor;
Font = font;
}
/// <summary>
/// Graphics object with which painting should be done.
/// </summary>
public Graphics Graphics { get; }
/// <summary>
/// The window for which the tooltip is being painted.
/// </summary>
public IWin32Window? AssociatedWindow { get; }
/// <summary>
/// The control for which the tooltip is being painted.
/// </summary>
public Control? AssociatedControl { get; }
/// <summary>
/// The rectangle outlining the area in which the painting should be done.
/// </summary>
public Rectangle Bounds { get; }
/// <summary>
/// The text that should be drawn.
/// </summary>
public string? ToolTipText { get; }
/// <summary>
/// The font used to draw tooltip text.
/// </summary>
public Font? Font { get; }
/// <summary>
/// Draws the background of the ToolTip.
/// </summary>
public void DrawBackground()
{
using var backBrush = _backColor.GetCachedSolidBrushScope();
Graphics.FillRectangle(backBrush, Bounds);
}
/// <summary>
/// Draws the text (overloaded)
/// </summary>
public void DrawText()
{
// Pass in a set of flags to mimic default behavior
DrawText(TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter
| TextFormatFlags.SingleLine | TextFormatFlags.HidePrefix);
}
/// <summary>
/// Draws the text (overloaded) - takes a TextFormatFlags argument.
/// </summary>
public void DrawText(TextFormatFlags flags)
{
TextRenderer.DrawText(Graphics, ToolTipText, Font, Bounds, _foreColor, flags);
}
/// <summary>
/// Draws a border for the ToolTip similar to the default border.
/// </summary>
public void DrawBorder()
{
ControlPaint.DrawBorder(Graphics, Bounds, SystemColors.WindowFrame, ButtonBorderStyle.Solid);
}
}
|