Come posso convertire una lunghezza di stringa in un'unità pixel?
-
19-08-2019 - |
Domanda
Ho una stringa come questa:
string s = "This is my string";
Sto creando un rapporto Telerik e devo definire un textbox
che è la larghezza della mia stringa. Tuttavia, la proprietà size deve essere impostata su Unit (Pixel, Point, Inch, ecc.). Come posso convertire la lunghezza della mia stringa in, diciamo un Pixel in modo da poter impostare la larghezza?
EDIT: ho provato a ottenere un riferimento all'oggetto grafico, ma questo viene fatto in una classe che eredita da Telerik.Reporting.Report
.
Soluzione
Senza utilizzare un controllo o un modulo:
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));
}
O in 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
Altri suggerimenti
Size textSize = TextRenderer.MeasureText("How long am I?", font);
In questo caso, di solito uso un modo sporco, ma semplice:
- Aggiungo un'etichetta
invisibile
che la sua proprietàAutoSize
ètrue
- lavoro sporco -. - Quando voglio avere il
Width
per una stringa specifica, lo imposto suLabel.Text
. - Il
Width
diLabel
mi darà il valore corretto.
Dipende anche dal carattere. La lunghezza della stringa non è sufficiente.
È possibile creare un'istanza di un oggetto grafico e utilizzare il metodo MeasureString ()
. Ma dovrai passare il nome del font, la dimensione del font e altre informazioni.