Sto usando il codice seguente per disegnare il testo su una bitmap:È possibile definire una dimensione precisa del carattere quando si disegna il testo utilizzando GDI +?
using (Font font = new Font("Arial", 10.0f, FontStyle.Bold, GraphicsUnit.Point))
{
//draw the text
graphics.DrawString("Some text", font, Brushes.White, rect, stringFormat);
}
Funziona bello. Qui il testo è reso:
voglio rendere il testo un po 'più grande. Se ho impostato 11 come dimensione del carattere, ecco cosa ottengo:
E 'troppo grande per quello che voglio. Ho provato 10,25, 10,5 e tale ma dà stesso risultato 10.
cerco anche di impostare GraphicsUnit
a Pixel
ma si comporta lo stesso (senza possibilità di impostare la dimensione di carattere personalizzato).
Ecco la mia domanda:
Nella formulazione del testo utilizzando GDI + (C#), c'è un possiblity per "sintonizzare" dimensione del testo reso?
EDIT: codice più completo frammento (come richiesto):
using (Bitmap bitmap = new Bitmap(width, height))
using (Graphics graphics = Graphics.FromImage(bitmap))
using (Font font = new Font("Arial", 10.0f, FontStyle.Bold, GraphicsUnit.Point))
{
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
Rectangle rect = new Rectangle(0, 0, width, height);
//method 1
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Center;
stringFormat.LineAlignment = StringAlignment.Center;
graphics.DrawString("Some text", font, Brushes.White, rect, stringFormat);
//method 2
TextFormatFlags flags = TextFormatFlags.HorizontalCenter |
TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak;
TextRenderer.DrawText(graphics, "Some text", font, rect, Color.White, flags);
bitmap.Save(stream, ImageFormat.Png);
}
Prova 'TextRenderingHint.ClearTypeGridFit' – leppie
ho provato graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit, ma dà gli stessi risultati – tigrou
ho il sospetto che il vostro' StringFormat' è sbagliato. IIRC, ho usato 'FitBlackBox' con successo. In effetti ho ottimizzato la larghezza del font per essere esattamente un numero intero, basato su impostazioni di altezza molto specifiche. – leppie