Jak pobrać długość string w pixelach?

Jak pobrać długość string w pixelach?
bloniak91
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0

Witam,
za pomocą metody Graphics.DrawString() rysuję sobie na bitmapie tekst. Chcę pobrać jego szerokość i wysokość w pixelach. Jak można to zrobić?
Próbuję korzystać z MeasureString, ale nie za bardzo rozumiem jej działanie, a konkretniej zwracanych przez nią wartości. Jak te wartości mają się do pikseli?
Kod:

Kopiuj
 string nazwa = "TEST";
            SizeF stringSize = new SizeF();
                Bitmap bmp = new Bitmap(256, 128);
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    Font font = new Font("Arial", 10);
                    g.Clear(System.Drawing.Color.White);

                    g.DrawString(nazwa, font, System.Drawing.Brushes.Black, x, y);
                    stringSize = g.MeasureString(nazwa, font);
                }
            
                MessageBox.Show(stringSize.Width.ToString());
bloniak91
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0
Kopiuj
string nazwa = "i";g.PageUnit = GraphicsUnit.Pixel;

GraphicsUnit zmieniałem na różne jednostki, ale przy żadnej nie otrzymałem tego co chcę.
Literka 'i' na bitmapie przy tym foncie zajmuje dokładnie 1 piksel. a MeasureString wyrzuca mi 7,49...
W podesłanych linkach niestety nie widzę rozwiązania mojego problemu(być może czytam bez zrozumienia :) )

fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
0

Pokaż ten kod.

bloniak91
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 93
0
Kopiuj
     int x = 0;
     int y = 0;
     string nazwa = "i";
            SizeF stringSize = new SizeF();
       

                Bitmap bmp = new Bitmap(256, 128);
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    Font font = new Font("Arial", 10);
                    g.Clear(System.Drawing.Color.White);
                    g.PageUnit = GraphicsUnit.Pixel;
                    g.DrawString(nazwa, font, System.Drawing.Brushes.Black, x, y);
                    stringSize = g.MeasureString(nazwa, font);
                }
            
                MessageBox.Show(stringSize.Width.ToString());
fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
0

Wykonaj ten przykład z MSDN...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.