muszę zbudować funkcję w bibliotece klasy, które miało ciąg i konkretnej czcionki tego napisu następnie uzyskać szerokość napisuJak uzyskać ciąg szerokość
Więc jak mogę uzyskać szerokość graniczny łańcuch ?
muszę zbudować funkcję w bibliotece klasy, które miało ciąg i konkretnej czcionki tego napisu następnie uzyskać szerokość napisuJak uzyskać ciąg szerokość
Więc jak mogę uzyskać szerokość graniczny łańcuch ?
Możesz uzyskać obiekt Graphics
(używając Control.CreateGraphics() na pojemniku, do którego zamierzasz wysłać tekst) i wywołać MeasureString()
, aby to zrobić. Jest to dość powszechna technika GDI + .
Więcej informacji z MSDN: http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx
AFAIK GDI + pomiary tekstowe są nieco problematyczne. W szczególności, gdy używasz rozmiaru do wyśrodkowania tekstu, który nie działa zgodnie z oczekiwaniami. – CodesInChaos
Używam metody 'MeasureString', a teraz otrzymałem wartość zwracaną z typem SizeF, następnie dostałem go do PointF i wiem teraz szerokość, ale w PointF >>> Potrzebuję go w cm! Próbuję przekonwertować go, ponieważ myślę, że PointF jest jak punkt Postscript, ale myślę, że moja formuła konwersji nie jest poprawna >> tak Jak przekonwertować po uzyskać szerokość poinf! – AshOoO
'PointF' jest po prostu wartością" zmiennoprzecinkową "dla" Punktu "(tj. Wartości nie-integralne). Konwertowanie z punktów na centymetry powinno być wykonalne (punkty-> piksele-> dpi-> cale-> cm?), Ale dlaczego potrzebujesz centymetrów? –
Innym sposobem na to jest z TextRenderer
i wywołać jegoMeasureString
metody, przekazując ciąg i rodzaj czcionki.
MSDN Przykład:
private void MeasureText1(PaintEventArgs e)
{
String text1 = "Measure this text";
Font arialBold = new Font("Arial", 12.0F);
Size textSize = TextRenderer.MeasureText(text1, arialBold);
TextRenderer.DrawText(e.Graphics, text1, arialBold,
new Rectangle(new Point(10, 10), textSize), Color.Red);
}
UWAGA: To jest tylko alternatywnym rozwiązaniem (równie ważny) jednego już wysłana przez @Neil Barnwell (w przypadku jeśli masz już odwołanie do Systemu .Windows.Forms w twoim projekcie, może to być wygodniejsze).
Myślę, że to działa w aplikacja Windows nie jest projektem biblioteki klasowej! – AshOoO
@AshOoO Zgadzam się, to jest to, co na końcu mojej odpowiedzi dotyczy: =) – jadarnel27
Zmierzy to rozmiar tekstu na aktualnym formularzu. Jeśli chcesz zmierzyć rozmiar tekstu, na przykład na wyjściu drukarki, będziesz musiał użyć metody 'e.Graphics.MeasureString (...)'. – AaA
Może być scalony z tym: http://stackoverflow.com/questions/5553965/programmatically-measure-string-in-asp-net – digEmAll
Pomiar rozmiaru ciągu dla strony internetowej brzmi wątpliwie. Nie ma sposobu, aby powiedzieć, jaki rozmiar przeglądarka ma wyświetlać czcionkę AFAIK. – davisoa
Określona czcionka nie wystarczy, aby o tym wiedzieć. Musisz również wiedzieć, który renderer wyświetli tekst. Na przykład Apple i MS renderują tekst bardzo różnie i nie zdziwiłbym się, gdyby miało to wpływ na szerokość graficzną tekstu. Jeśli spróbujesz uzyskać szerokość tekstu wyświetlanego w html po stronie serwera (jak sugerują twoje tagi), najprawdopodobniej nie będzie to możliwe. – CodesInChaos