Вывожу строку в ListView
вот так:
private void listViewStreams_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
try
{
using (Bitmap bitmap = new Bitmap(e.Bounds.Width, e.Bounds.Height))
{
using (Graphics buffer = Graphics.FromImage(bitmap))
{
using (StringFormat sf = new StringFormat())
{
sf.FormatFlags = StringFormatFlags.NoWrap;
sf.LineAlignment = StringAlignment.Center;
switch (e.Header.TextAlign)
{
case HorizontalAlignment.Center:
sf.Alignment = StringAlignment.Center;
break;
case HorizontalAlignment.Right:
sf.Alignment = StringAlignment.Far;
break;
}
bool selected = listViewStreams.SelectedIndices.Count > 0 && listViewStreams.SelectedIndices[0] == e.ItemIndex;
Brush brushBkg = selected ? SystemBrushes.Highlight : SystemBrushes.Control;
Rectangle r = new Rectangle(0, 0, e.Bounds.Width, e.Bounds.Height);
buffer.FillRectangle(brushBkg, r);
StreamItem streamItem = listViewStreams.Items[e.ItemIndex].Tag as StreamItem;
Brush brushText;
if (selected)
{
brushText = streamItem.IsImportant && (e.ColumnIndex == 0 || e.ColumnIndex == 2) ? Brushes.Yellow : Brushes.White;
}
else
{
brushText = streamItem.IsImportant && (e.ColumnIndex == 0 || e.ColumnIndex == 2) ? Brushes.Red : Brushes.Black;
}
buffer.DrawString(e.SubItem.Text, listViewStreams.Font, brushText, r, sf);
e.Graphics.DrawImage(bitmap, e.Bounds.X, e.Bounds.Y);
}
}
}
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.StackTrace);
}
}
Если строка не входит в отведённый ей прямоугольник, то стандартная отрисовка ставит в конце строки точки. А как сделать это при ручной отрисовке?
Не нашел такого флага в StringFormat