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

Jak pobrać długość string w pixelach?
bloniak91
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 7 lat
  • 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());
fourfour
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:627
L0
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
bloniak91
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 7 lat
  • 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:około 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:627
0

Pokaż ten kod.

bloniak91
  • Rejestracja:około 11 lat
  • Ostatnio:prawie 7 lat
  • 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:około 11 lat
  • Ostatnio:prawie 9 lat
  • Postów:627
0

Wykonaj ten przykład z MSDN...

Zobacz pozostałe 2 komentarze
bloniak91
no dobra, widze o co Ci chodzi, ale czy da się dla samej literki 'i' wyciągnąć ten jeden piksel szerokości? Że rzeczywiście tyle ona zajmuje.
fourfour
Może to pomoże http://stackoverflow.com/a/23532921 (szczególnie informacja podana jako IMPORTANT :D)
bloniak91
Na razie odpoczywam już od tego :) do jutra postaram się sprawdzić podrzucony pomysł( wygląda ciekawie).

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.