Obiekt Graphics i MeasureString

0

Witam,

mam pewien mały problem a raczej wątpliwości co do wykorzystanej przeze mnie metody.

Chcę wygenerować obrazek z tekstem.
Obrazek ma być wielkości tekstu, a więc do tego celu wykorzystuje MeasureString().

Robie to w następujący sposób:

  1. Tworze obiekt Bitmapy o dowolnym rozmiarze.
  2. Z bitmapy pobieram Graphics.
  3. Z Graphics pobieram MeasureString - szerokość i wysokość.
  4. Na podstawie tych wymiarów tworzę nową bitmapę i na niej wypisuję tekst.

Czy takie rozwiązanie jest poprawne?
Chciał bym uniknąć tworzenia dodatkowej bitmapy tylko po to aby zmierzyć rozmiar, a niestety właściwość Size tej bitmapy jest tylko do odczytu.

Dodam, że ma to być aplikacja konsolowa.

0

Również klasa Font posiada metodę MeasureString.

  1. Tworzysz obiekt czcionki (Font) o zadanych parametrach,
  2. Mierzysz tekst,
  3. Tworzysz bitmapę,
  4. Malujesz tekst na bitmapie wcześniej utworzoną czcionką.
0

O prosze :) Dzieki :)

Mam jeszcze jedno pytanie w tym temacie - w temacie mierzenia dlugosci tekstu.
Wczoraj spedzialem 3 bite godziny na poszukiwaniu metody na to aby obliczyc prawidlowa wielkosc tekstu i niestety ale nie mam pojecia jak sobie z tym poradzic.

Problem poruszany jest na wielu forach, a chodzi o to, ze MessureString (sprawdzalem to na Bitmapie, jeszcez nie testowalem an Font ale podejrzewam, ze niczym sie to nie roznin) zawsze daje doatkowe odstepy po i przed tekstem (zawsze jest jakis 2-3 pikselowy margines).

Problem ten jest szerzej opisany w tym artykule:
http://www.codeproject.com/KB/GDI-plus/articlefour.aspx

Niestety poddalem sie przegrzebujac ten kod w poszukiwaniu funkcji do poprawnego zmierzenia szerokosci i iwysokosci tekstu.

Czy moze ktos z Was spotkal sie z rozwiazaniem tego problemu i mogl by nakierowac mnie na jakis link albo podrzucic gotowa funkcje, bo prawde mowiac juz powoli trace nadzieje :/

0

Wyglada na to, ze Font jednak nie ma takiej metody jak MessureString

0

wystarczy narysowac prostokat tak dlugi jak obrazek i tam wpisywac teks a metoda measurestring bedzie zawila teks (o ile bedzie taka potrzeba) na rowno z obrazkiem (czyt.prostokatem).
oto przyklad (napisz czy pomogl):

font f = new font("tahoma", 10);
string s = "bla bla bla";
int lw = 200;

sizef sf = g.measureString(s, f, lw);

rectanglef rf = new rectanglef(20,5,sf.Width, s.Hight);
g.drawstring(s, f, brushes.black, rf);

pisane od reki wiec moga byc male bledy, ale chyba powinno byc ok ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1