Re[2]: Нарисовать строку с переносом
От: Сергей15 Беларусь  
Дата: 06.01.06 14:41
Оценка:
Здравствуйте, 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 для определения длины подстрок и разделять их самому —
а так как надо выводить много строк в ячейках грида, то явно будет тормозить и придется оптимизировать и т.п.
Просто была слабая надежда что есть стандартный метод — типа установки неизвестного мне флага и все зарабтает .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.