Pytanie : Dlaczego móc I Graphics.MeasureString the chrzcielnica styl?

I nawracać MessageDialog zastępstwo I napisać niektóre czas temu w pełni kierować zamiast API wezwanie dla być swój funkcja.  Ten dialog móc główny kłoszenie i subheading lub szczegół widok, i ono automatycznie przystosowywać swój chrzcielnica dependiing na the OS w użyciu (Segoe UI dla Vista i 7, Tahoma dla XP).  Tam  być tam  kłoszenie wtedy the kłoszenie odpłacać się w śmiały, inaczej w normalna style.

Prawidłowo the dialog I używać Graphics.MeasureString i przechodzić w the chrzcielnica dla porównanie, using the wracać SizeF the rozmiar the etykietka wymagać i tak the rozmiar the dialog.

However, gdy I przechodzić śmiały chrzcielnica MeasureString the wartość wracać ignorować the śmiały styl i wracać mały wartość właściwie potrzebować che typowo powodować the ostatni słowo w the kłoszenie odrzucać (przypuszczalnie ono być outside the kalkulować teren).  The rozmiar wracać być zawsze poprawny dla the non-śmiały wersja the tekst provided.

How móc I powodować the poprawny rozmiar wracać dla the różnica w rozmiar który the śmiały chrzcielnica wymagać?  Zauważać że I próbować the przeciążenie który akceptować stringformat parametr i robić żadny różnica the result.

Chirs Bray
(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:
-------------------------------
            
SizeF headingSize;
            SizeF subHeadingSize;

            // Miara sznurek rozmiar
            // Rozmiar 
            headingSize = MeasureString (kłoszenie, this.headingLabel.Width, headingLabel.Font);

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

            // Subheading (rozmiar być singleMessage jeżeli singleMessage)
            subHeadingSize = MeasureString (subHeading, this.subHeadingLabel.Width, subHeadingLabel.Font);
 
------------------------------------------------------------       


intymny Wielkościowy MeasureString (smyczkowy str, int maxWidth, Chrzcielnica chrzcielnica)
        {
            (Grafika g = this.CreateGraphics ())
            {
                SizeF strRectSizeF = g.MeasureString (str, chrzcielnica, maxWidth);
                g.Dispose ();

                powrotny nowy Rozmiar ((int) Math.Ceiling (strRectSizeF.Width), (int) Math.Ceiling (strRectSizeF.Height));
            }
        }

Odpowiedź : Dlaczego móc I Graphics.MeasureString the chrzcielnica styl?


the kod który pracować dla dla samochód-być pod… I dodawać Etykietka kontrola z AutoSize = fałszywy z niektóre tekst z chrzcielnica Arial 16 stały bywalec z granica = fixedsingle. Wtedy w guzik stuknięcie treser i miewać the wtedy kod….gdy guzik klikać

dwa rzecz: i używać label1.CreateGraphics () i label1.ClientSize (jeżeli ono być pracujący grzywna z Rozmiar, then lepszy rozmiar)
Ten próbka być od => 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:
intymny pustka button1_Click (przedmiot nadawca, EventArgs e)
        {
            // Tworzyć Grafika protestować dla the Kontrola.
            Grafika g = label1.CreateGraphics ();

            Chrzcielnica nf = nowy Chrzcielnica (label1.Font, FontStyle.Bold);

            // Dostawać the Rozmiar the tekst Tekst.
            Rozmiar preferredSize = g.MeasureString (
               label1.Text, nf) .ToSize ();

            label1.Font = nf;
                        
            label1.ClientSize = nowy Rozmiar (preferredSize.Width, preferredSize.Height); // ty móc niektóre podszycie przestrzeń the szerokość i wzrost tutaj

            // Czyścić przedmiot the Grafika przedmiot.
            g.Dispose ();
        }
Inne rozwiązania  
 
programming4us programming4us