0
如果文本是多行的,我將創建一個自定義ToolTip
,該文本將粗體顯示第一行文本。我還使用VisualStyleRenderer
正確繪製具有樣式的工具提示。但是,當我繪製文本(即使使用TextFormatFlags.VerticalCenter
設置)時,它會在框的頂部處繪製。我打算將邊界框撞上2個像素(它固定在Windows 7上),但我並不是100%確定它是如何便攜到另一個操作系統的。有誰知道如何正確繪製文字垂直居中?將文本垂直對齊VisualStyleElement.ToolTip.Standard.Normal的VisualStyleRenderer
編輯:爲了清楚,我知道這段代碼不粗體的第一行。我試圖第一個複製一個標準的工具提示,然後事後做粗體。
public class BoldedFirstLineToolTip : ToolTip
{
public BoldedFirstLineToolTip()
{
this.OwnerDraw = true;
this.Draw += new DrawToolTipEventHandler(OnDraw);
}
private void OnDraw(object sender, DrawToolTipEventArgs e)
{
// Try to draw using the visual style renderer.
if (VisualStyleRenderer.IsElementDefined(VisualStyleElement.ToolTip.Standard.Normal))
{
var renderer = new VisualStyleRenderer(VisualStyleElement.ToolTip.Standard.Normal);
renderer.DrawBackground(e.Graphics, e.Bounds);
var b = e.Bounds;
// b.Y + 2 // This works when using e.Graphics.DrawString.
renderer.DrawText(e.Graphics, b, e.ToolTipText, false /*drawDisabled*/,
TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter);
}
else
{
// Fall back to non-visual style drawing.
e.DrawBackground();
e.DrawBorder();
e.DrawText();
}
}
}