我有一个多行文本字符串(例如“Stuff\nMore Stuff\nYet More Stuff”),我想将它与位图一起绘制到工具提示中。由于我正在绘制位图,因此我需要将 OwnerDraw 设置为 true,我正在这样做。我也在处理 Popup 事件,因此我可以将工具提示的大小调整到足以容纳文本和位图的大小。
我正在调用 e.DrawBackground 和 e.DrawBorder(),然后在工具提示区域的左侧绘制我的位图。
是否有一组标志我可以传递给 e.DrawText() 以便左对齐文本,但要偏移它以便它不会被绘制在我的位图上?或者我是否还需要自定义绘制所有文本(这可能涉及在换行符上拆分字符串等)?
更新:最终代码如下所示:
private void _ItemTip_Draw(object sender, DrawToolTipEventArgs e)
{
e.DrawBackground();
e.DrawBorder();
// Reserve a square of size e.Bounds.Height x e.Bounds.Height
// for the image. Keep a margin around it so that it looks good.
int margin = 2;
Image i = _ItemTip.Tag as Image;
if (i != null)
{
int side = e.Bounds.Height - 2 * margin;
e.Graphics.DrawImage(i, new Rectangle(margin, margin, side, side));
}
// Construct bounding rectangle for text (don't want to paint it over the image).
int textOffset = e.Bounds.Height + 2 * margin;
RectangleF rText = e.Bounds;
rText.Offset(textOffset, 0);
rText.Width -= textOffset;
e.Graphics.DrawString(e.ToolTipText, e.Font, Brushes.Black, rText);
}