У меня есть многострочная текстовая строка (например, «Stuff \ nMore Stuff \ nYet More Stuff»), и я хочу ее поместить вместе с растровым изображением в всплывающую подсказку. Поскольку я рисую растровое изображение, мне нужно установить OwnerDraw в true, что я делаю. Я также обрабатываю событие Popup, поэтому я могу настроить всплывающую подсказку, чтобы быть достаточно большим, чтобы удерживать текст и растровое изображение.Выравнивание текста на подсказке OwnerDraw в C#/.NET
Я вызываю 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);
}