2016-03-16 2 views
-1

Я использую Visual studio 2013 и Mvc Framework. Мы переносим оконное приложение на веб-приложение mvc. Теперь я ищу эквивалентную функцию TextRenderer.MeasureText для C#, которую я использую в своем проекте. Простая я хочу эту функцию преобразования в mvc C#. В основном я ищу вариант Textrender.MeasureText Alternate для этой технологии.Что такое TextRenderer.MeasureText эквивалент fucntion в C# mvc

** 

Private Sub DrawPointText(ByRef gr As Graphics, ByVal Color As Drawing.Color, ByRef Point As PointF, _ 
         ByVal Corner As String, ByVal strOutput As String, Optional ByVal optFont As Font = Nothing, _ 
         Optional ByVal intRotate As Integer = 0) 
     Dim fnt As New Font("New Times Roman", 12, FontStyle.Bold) 
     Dim strX As String 
     Dim TextPositionX As Double 
     Dim TextPositionY As Double 
     Dim TextShift As Size 
     Dim OrgPoint As VGS.PointD 
     Dim drawFormat As New System.Drawing.StringFormat 
     If Not optFont Is Nothing Then 
      fnt = optFont 
     End If 
     OrgPoint = RevertValue(Point) 
     strX = strOutput 
     TextShift = TextRenderer.MeasureText(strX, fnt) 
     Select Case Corner 
      Case "NE" 
       TextPositionX = Point.X 
       TextPositionY = Point.Y - TextShift.Height 
      Case "SE" 
       TextPositionX = Point.X 
       TextPositionY = Point.Y 
      Case "SW" 
       TextPositionX = Point.X - TextShift.Width 
       TextPositionY = Point.Y 
      Case "NW" 
       TextPositionX = Point.X - TextShift.Width 
       TextPositionY = Point.Y - TextShift.Height 
      Case Else 
       MessageBox.Show("Unknown Corner In DrawPointText") 
     End Select 
     If intRotate = 0 Then 
      gr.DrawString(strX, fnt, New SolidBrush(Color), TextPositionX, TextPositionY, drawFormat) 
     Else 
      drawFormat.FormatFlags = StringFormatFlags.DirectionVertical 
      gr.RotateTransform(intRotate) 
      If intRotate > 0 Then 
       gr.DrawString(strX, fnt, New SolidBrush(Color), TextPositionY, -1 * TextPositionX) ', drawFormat 
      Else 
       gr.DrawString(strX, fnt, New SolidBrush(Color), -1 * TextPositionY, TextPositionX) ', drawFormat 
      End If 
      gr.RotateTransform(-1 * intRotate) 
     End If 
    End Sub 

**

+0

Что вы пытаетесь сделать так? Это веб-приложение, поэтому его клиентский браузер выполняет рендеринг, а не сервер. –

+0

Я использую canvas (html5), и я хочу сделать текст чертежа в соответствии с точками (x, y) –

+0

Вы можете создать метод расширения HtmlHeper на стороне сервера, чтобы создать html, включая позиционирование исходной точки текста на холсте, но вы для определения ширины отображаемого текста потребуется javascript –

ответ

1

Размер текста зависит от многих различных факторов, как размер шрифта , зумирование фактор, шрифт самого и так далее.
Вы даже не знаете, установлен ли шрифт, который вы используете, на клиенте.

Итак, как уже сказал Стивен, на сервере это невозможно, поскольку на размер текста, который не может контролировать сервер, влияет множество факторов.

Путем преобразования настольного приложения к MVC приложения, то эквивалентно для этой части (GUI) будет реализация в JavaScript.
В JavaScript вы can measure the text size.