Como posso converter um comprimento da corda a uma unidade de pixel?
-
19-08-2019 - |
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
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 propriedadeAutoSize
étrue
- trabalho sujo -. - Quando eu quero ter o
Width
para uma seqüência específica, eu defini-lo para oLabel.Text
. - O
Width
doLabel
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.