Qual è il modo migliore per disegnare Stringa al centro di un rettangolo? La dimensione del carattere del testo può essere ridotta per adattarla. Nella maggior parte dei casi il testo è troppo grande per adattarsi a un determinato font, quindi è necessario ridurlo.Disegna il testo al centro
risposta
Si sta lavorando per me sapere. Questo è quello che ho fatto
Size textSize = TextRenderer.MeasureText(Text, Font);
float presentFontSize = Font.Size;
Font newFont = new Font(Font.FontFamily, presentFontSize, Font.Style);
while ((textSize.Width>textBoundary.Width || textSize.Height > textBoundary.Height) && presentFontSize-0.2F>0)
{
presentFontSize -= 0.2F;
newFont = new Font(Font.FontFamily,presentFontSize,Font.Style);
textSize = TextRenderer.MeasureText(ButtonText, newFont);
}
stringFormat sf;
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(Text,newFont,Brushes.Black,textBoundary, sf);
Determinare la dimensione del testo da disegnare e quindi determinare l'offset per l'inizio della stringa dal centro del rettangoloF e disegnarlo.
Ottieni larghezza/2 e altezza/2 del rettangolo, quindi utilizzando System.Graphics.MeasureString per ottenere le dimensioni della stringa, ancora a metà e sottraendo dai valori di larghezza/altezza precedenti e si finisce con la X , Coordinata Y per disegnare la stringa in modo che sia centrata.
Questo codice centra il testo orizzontalmente e verticalmente:
stringFormat sf;
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
grp.DrawString(text, font, Brushes.Black, rectf, sf);
come ridurre la dimensione del carattere? – Prithis
ho giocato intorno con esso un po 'e ho trovato questa soluzione (assumendo che il RectangleF rect
e string text
sono già definite):
StringFormat stringFormat = new StringFormat()
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
using (Graphics g = this.CreateGraphics())
{
SizeF s = g.MeasureString(text, this.Font);
float fontScale = Math.Max(s.Width/rect.Width, s.Height/rect.Height);
using (Font font = new Font(this.Font.FontFamily, this.Font.SizeInPoints/fontScale, GraphicsUnit.Point))
{
g.DrawString(text, font, Brushes.Black, rect, stringFormat);
}
}
Facile da usare :)
public static void DrawStringCenter(Image image, string s, Font font, Color color, RectangleF layoutRectangle)
{
var graphics = Graphics.FromImage(image);
var brush = new SolidBrush(color);
var format = new StringFormat
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center
};
graphics.DrawString(s, font, brush, layoutRectangle, format);
}
- 1. UITextField il testo non appare al centro
- 2. UILabel Allinea il testo al centro
- 3. drawRect disegna il testo 'trasparente'?
- 4. Testo allineato al centro/centrale con PIL?
- 5. Testo nel footer Bootstrap allineato al centro
- 6. Come impostare il testo al centro nell'applicazione Android ListView?
- 7. Android allineare il testo in alto al centro
- 8. Come posizionare il testo al centro di un percorso svg
- 9. come mettere il testo al centro di un'immagine
- 10. come allineare il testo verticalmente al centro in Android
- 11. Come allineare il testo al centro in etichetta asp
- 12. Centro al centro dello schermo
- 13. centro h1 al centro dello schermo
- 14. qt disegna testo colorato
- 15. Disegna il testo in visualizzazione circolare?
- 16. Disegna il testo sottolineato/barrato (MULTILINE STRING)?
- 17. allineare il centro di testo con Android
- 18. UITextVisualizza il testo originale con centro verticale
- 19. Sfondo video HTML5, mantenere il centro del video al centro
- 20. Disegna testo in sovrapposizione cerchio
- 21. Gambero: centro di ancoraggio del testo al punto dato
- 22. SVG Cerchia testo su textPath (allineato al centro)
- 23. Allineamento centro testo attribuito
- 24. Android - visualizzazione del testo al centro della barra di avanzamento
- 25. Allineamento del testo dinamico generato immagine php al centro
- 26. set modalità testo allineare al centro in filatore in Android
- 27. Mostra testo al centro dello schermo del terminale in golang
- 28. Come allineare al centro questo testo accanto a un pulsante?
- 29. Aggiunta di testo al centro di un D3 Donut grafico
- 30. CSS allineamento verticale del testo al centro dell'immagine
Ho visto che hai pubblicato la tua soluzione di lavoro quando ho postato la mia versione, ma ho lasciato il mio perché è più efficiente (ottiene la dimensione del font senza loop) e penso che il tuo codice possa perdere memoria, creando molti oggetti font ma non chiamare Dispose su di loro. –
Qual è il valore del parametro "textBoundary"? Si prega di dichiararlo e inizializzarlo. –
OKAY I GOT IT. textBoundary viene creato come sotto String imgsrc = "PERCORSO DEL FILE DI IMMAGINE SU DISCO"; Bitmap bmp = new Bitmap (System.Drawing.Image.FromFile (imgsrc)); RectangleF textBoundary = new Rectangle (0, 0, bmp.Width, bmp.Height - 30); –