Вопрос : Как могу я принудить Graphics.MeasureString для рассмотрения типа купели?

Я преобразовываю замену MessageDialog, котор я написал некоторое время тому назад полно управляться вместо использования звоноков API для некоторых из своих функций.  Этот диалог может иметь главным образом рубрику и взгляд подрубрики или детали, и он автоматически регулирует свою купель dependiing на OS в пользе (Segoe UI для перспективы и 7, Tahoma для XP).  будет sub рубрика после этого, котор рубрика представлена в смелейшем, в противном случае в нормальном style.

правильно определить размер диалог я использую Graphics.MeasureString и прохожу в купель для сравнения, using возвращенное SizeF для того чтобы высчитать размер требуемых ярлыков и таким образом размер dialog.

However, когда я передаю смелейшей купелью к MeasureString возвращенное значение игнорирует смелейший тип и возвращает более малое значение чем фактическ необходимо которым типично причиняет последнее слово в рубрике быть сброшенным (предположительно оно будет снаружи высчитанная область).  Возвращенным размером будет всегда вводить поправку на non-смелейший вариант текста provided.

How может я причиняет надлежащий размер быть возвращенный позволять для разницы в размере смелейшая купель требует?  Заметьте что я имею судимо перегрузки признавают параметр stringformat и они не вносят изменения никакой к result.

Chirs Bray
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
class= " id= " codeSnippet754129
-------------------------------
            
SizeF headingSize;
            SizeF subHeadingSize;

            Размеры шнура измерения //
            // возглавляя размер 
            headingSize = MeasureString (рубрика, this.headingLabel.Width, headingLabel.Font);

            this.headingLabel.Size = headingSize.ToSize ();

            Подрубрика // (размер будет zero если singleMessage), то
            subHeadingSize = MeasureString (подрубрика, this.subHeadingLabel.Width, subHeadingLabel.Font);
 
------------------------------------------------------------       


приватный размер MeasureString (str шнура, maxWidth int, купель купели)
        {
            использование (графики g = this.CreateGraphics ())
            {
                strRectSizeF SizeF = g.MeasureString (str, купель, maxWidth);
                g.Dispose ();

                возвращенный новый размер ((int) Math.Ceiling (strRectSizeF.Width), (int) Math.Ceiling (strRectSizeF.Height));
            }
        }
class=

Ответ : Как могу я принудить Graphics.MeasureString для рассмотрения типа купели?


Кодий работало для меня для автоматическ-загрунтовкы под… мной добавило управление ярлыка с AutoSize = ложно с некоторым текстом с постоянным посетителем Arial 16 купели с границей = fixedsingle. После этого в укротителе щелчка кнопки я имел внизу Кодего….когда кнопка щелкнула

2 вещи к примечанию: я использовал label1.CreateGraphics () и label1.ClientSize (если он работает отлично с размером, то лучше для использования размера)
Этот образец от => http://msdn.microsoft.com/en-us/library/system.windows.forms.control.creategraphics.aspx
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
приватное свободное пространство button1_Click (прислужник предмета, EventArgs e)
        {
            // создает графики возражает для управления.
            Графики g = label1.CreateGraphics ();

            Купель nf = новая купель (label1.Font, FontStyle.Bold);

            // получает размер необходимо приспособить форматный текст.
            Размер preferredSize = g.MeasureString (
               label1.Text, nf) .ToSize ();

            label1.Font = nf;
                        
            label1.ClientSize = новый размер (preferredSize.Width, preferredSize.Height); // вы smogли добавить некоторый космос прокладки к ширине и высоте здесь

            // очищает вверх предмет графиков.
            g.Dispose ();
        }
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us