Нарисовать строку с переносом
От: Сергей15 Беларусь  
Дата: 06.01.06 13:32
Оценка:
Всем добрый день.
Есть такая задача: нужно нарисовать строку в заданном прямоугольнике, причем если строка больше чем
прямоугольник, текст переносится. Причем переносится не по целым словам, а по буквам — т.е. нарисовал в первой строке
сколько поместилось текста, остальное начал рисовать на следующей строке — даже если была середина слова.
Можно ли это сделать стандартными средствами? Или хотя бы как измерить какой кусок строки поместится в указанной длине
(чтобы самому нарисовать строку по кускам)?
Re: Нарисовать строку с переносом
От: VyacheslavZhitomirskiy  
Дата: 06.01.06 14:18
Оценка: 1 (1)
Здравствуйте, Сергей15, Вы писали:

С>Всем добрый день.

С>Есть такая задача: нужно нарисовать строку в заданном прямоугольнике, причем если строка больше чем
С>прямоугольник, текст переносится. Причем переносится не по целым словам, а по буквам — т.е. нарисовал в первой строке
С>сколько поместилось текста, остальное начал рисовать на следующей строке — даже если была середина слова.
С>Можно ли это сделать стандартными средствами? Или хотя бы как измерить какой кусок строки поместится в указанной длине
С>(чтобы самому нарисовать строку по кускам)?


Graphics.DrawString(string, Font, Brush, RectangleF) может рисовать в прямоугольник. Если уж совсем не влезает, отрезает...

Пример:


        private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            RectangleF rect = new RectangleF(0, 0, 50, 50);
            g.DrawString("This is a very long string to be fill in a rectangle", this.Font, Brushes.Blue, rect);
        }



Размер строки можно вычислить методом Graphics.MeasureString, у него тоже много перегруженных вариантов...
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 для определения длины подстрок и разделять их самому —
а так как надо выводить много строк в ячейках грида, то явно будет тормозить и придется оптимизировать и т.п.
Просто была слабая надежда что есть стандартный метод — типа установки неизвестного мне флага и все зарабтает .
Нарисовать строку с переносом
От: Аноним  
Дата: 06.01.06 13:55
Оценка:
>>Можно ли это сделать стандартными средствами?

Можно. См. в <a href=http://irazin.ru/Downloads/Books/Chand.rar&gt;этой книге</a> раздел Working with Text and Strings -> Alignment and Trimming. Просто там много вкусного, и не хотелось бы выдавать "отписку"...

[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Offline FAQ[/url]] [1.01]
2 min @ 56.6 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Нарисовать строку с переносом
От: Аноним  
Дата: 06.01.06 15:04
Оценка: 3 (1)
>>Просто была слабая надежда что есть стандартный метод — типа установки неизвестного мне флага и все зарабтает

Заработает, если ты сумеешь прочитать мое предыдущее письмо в этой ветке.

[[url=http://www.gotdotnet.ru/DotNet/FAQ/OfflineFAQ/236958.aspx]Offline FAQ[/url]] [1.01]
2 min @ 56.6 kbps


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Нарисовать строку с переносом
От: Аноним  
Дата: 10.01.06 11:22
Оценка: 12 (2)
StringFormat format = new StringFormat();
format.Trimming = StringTrimming.Character;
.....DrawString(....., format);



данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.