Здравствуйте, VyacheslavZhitomirskiy, Вы писали:
VZ>Graphics.DrawString(string, Font, Brush, RectangleF) может рисовать в прямоугольник. Если уж совсем не влезает, отрезает...
VZ>Пример:
VZ>
VZ> private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
VZ> {
VZ> Graphics g = e.Graphics;
VZ> RectangleF rect = new RectangleF(0, 0, 50, 50);
VZ> g.DrawString("This is a very long string to be fill in a rectangle", this.Font, Brushes.Blue, rect);
VZ> }
VZ>
VZ>Размер строки можно вычислить методом Graphics.MeasureString, у него тоже много перегруженных вариантов...
Спасибо. Но это я все знаю, проблема в том что стандартно функция DrawString переносит по словам или вообще не переносит (если я не ошибаюсь).
Т.к. размеры области для вывода могут менятся в произвольные моменты, надо быстро вычислять на лету как нужно переносить строку (т.е. в какой позиции вставить\n например).
Наверное все-таки придется использовать MeasureCharacterRanges для определения длины подстрок и разделять их самому —
а так как надо выводить много строк в ячейках грида, то явно будет тормозить и придется оптимизировать и т.п.
Просто была слабая надежда что есть стандартный метод — типа установки неизвестного мне флага и все зарабтает

.