Определите Маркируют Size основанным на сумме размера текста и размера шрифта в Winforms/C#

Самое простое решение для случайного перетасовки в массиве.

String location[] = {"delhi","banglore","mathura","lucknow","chandigarh","mumbai"};
int index;
String temp;
Random random = new Random();
for(int i=1;i<location.length;i++)
{
    index = random.nextInt(i+1);
    temp = location[index];
    location[index] = location[i];
    location[i] = temp;
    System.out.println("Location Based On Random Values :"+location[i]);
}
40
задан Martin Marconcini 24 December 2008 в 00:12
поделиться

6 ответов

Как насчет Graphics.MeasureString, с перегрузкой, которая принимает строку, шрифт и макс. ширину? Это возвращается SizeF, таким образом, Вы можете круглое округление Height.

        using(Graphics g = CreateGraphics()) {
            SizeF size = g.MeasureString(text, lbl.Font, 495);
            lbl.Height = (int) Math.Ceiling(size.Height);
            lbl.Text = text;
        }
91
ответ дан Marc Gravell 4 August 2019 в 22:16
поделиться

Система. Рисование. Графика имеет метод MeasureString, который можно использовать с этой целью. Используйте перегрузку, которая берет строку, шрифт и международный параметр "ширины"; этот последний параметр определяет, что максимальная ширина допускала строку - используют ширину набора Вашей маркировки для этого параметра.

MeasureString возвращает объект SizeF. Используйте свойство Height этого возвращенного объекта для установки высоты маркировки.

Примечание: для получения Графического объекта с этой целью можно назвать это. CreateGraphics.

33
ответ дан MusiGenesis 4 August 2019 в 22:16
поделиться

Графика. MeasureString (), вероятно, поможет Вам.

Это - также один из единственных вариантов использования для использования Управления. CreateGraphics () вызов!

9
ответ дан Quibblesome 4 August 2019 в 22:16
поделиться

Хорошо эти 60 символов могли бы быть допустимыми для Вашего тестового текста, но не все символы имеют ту же ширину. Например, сравните
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
и
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

, они оба имеют 60 символов и все же имеют значительно отличающиеся ширины.

0
ответ дан Yuliy 4 August 2019 в 22:16
поделиться

Там какая-либо оборотная сторона к использованию класса TextRenderer для измерения строки (как в ответе Marc) вместо того, чтобы пройти работу для создания Графического объекта и т.д.?

0
ответ дан jean 27 November 2019 в 00:08
поделиться

Этот «ответ» предназначен для использования в будущем и для борьбы с первоначальным предположением, что AutoSize = true подразумевает, что он (метка WinForms) никогда не будет расти в высоту.

Следующая ссылка показывает различные эффекты AutoSize = true с другими свойствами, такими как MaximumSize. В зависимости от предполагаемого использования вопроса может оказаться целесообразным следовать одному из этих подходов.

http://blogs.msdn.com/jfoscoding/articles/478299.aspx

2
ответ дан 27 November 2019 в 00:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: