Pergunta

Eu tenho uma string como esta:

string s = "This is my string";

Estou criando um relatório Telerik e eu preciso definir uma textbox que é a largura da minha string. No entanto, a propriedade de tamanho precisa ser definida para uma unidade (Pixel, Ponto, Polegada, etc). Como posso converter meu comprimento string em, digamos, um pixel para que eu possa definir a largura?

EDIT:. Eu tentei obter uma referência para o objeto gráfico, mas isso é feito em uma classe que herda de Telerik.Reporting.Report

Foi útil?

Solução

Sem o uso de um controle ou formulário:

using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(new Bitmap(1, 1)))
{
    SizeF size = graphics.MeasureString("Hello there", new Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point));
}

Ou em VB.Net:

Using graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(New Bitmap(1, 1))
    Dim size As SizeF = graphics.MeasureString("Hello there", New Font("Segoe UI", 11, FontStyle.Regular, GraphicsUnit.Point))
End Using

Outras dicas

Size textSize = TextRenderer.MeasureText("How long am I?", font);

Neste caso, eu costumo usar um sujo, mas maneira simples:

  • adiciono um Label invisível que sua propriedade AutoSize é true - trabalho sujo -.
  • Quando eu quero ter o Width para uma seqüência específica, eu defini-lo para o Label.Text.
  • O Width do Label vai me dar o valor correto.

Depende do tipo de letra, também. comprimento da corda não é suficiente.

Você pode criar uma instância de um objeto gráfico um uso o método MeasureString(). Mas você terá que passar o nome da fonte, tamanho da fonte e outras informações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top