У меня есть проект, в котором я создаю изображение с повернутым текстом вокруг невидимого круга.
Рисунок сам по себе работает просто отлично. Однако, кажется, что независимо от того, какой шрифт я использую, я всегда получаю один и тот же результат, который я предполагаю, что используется какой-то шрифт низкого качества по умолчанию.
Вот код:
Bitmap objBmpImage = new Bitmap(1000, 1000);
System.Drawing.Text.InstalledFontCollection installedFontCollection = new System.Drawing.Text.InstalledFontCollection();
FontFamily[] fontFamilies = installedFontCollection.Families;
System.Drawing.Font objFont = new System.Drawing.Font(fontFamilies.Where(x => x.Name == "Arial").FirstOrDefault(),10);
Graphics objGraphics = Graphics.FromImage(objBmpImage);
objGraphics.Clear(Color.Transparent);
float angle = (float)360.0 / (float)competences.Count();
objGraphics.TranslateTransform(500, 450);
objGraphics.RotateTransform(-90 - (angle / 3));
int nbComptetence = competences.Count();
int indexCompetence = 0;
foreach (T_Ref_Competence competence in competences)
{
byte r, g, b;
HexToInt(competence.T_Ref_CompetenceNiveau2.T_Ref_CompetenceNiveau1.Couleur, out r, out g, out b);
Brush brush = new System.Drawing.SolidBrush(Color.FromArgb(255,r,g,b));
if (indexCompetence * 2 < nbComptetence)
{
objGraphics.DrawString(competence.Nom, objFont, brush, 255, 0);
objGraphics.RotateTransform(angle);
}
else
{
objGraphics.RotateTransform(180);
objGraphics.RotateTransform(angle/2);
float textSize = objGraphics.MeasureString(competence.Nom, objFont).Width;
objGraphics.DrawString(competence.Nom, objFont, brush, -253 - textSize, 0);
objGraphics.RotateTransform(angle);
objGraphics.RotateTransform(-180);
objGraphics.RotateTransform(-angle / 2);
}
indexCompetence++;
}
Я получаю шрифт, используя установленные семейства, подобные этому
System.Drawing.Text.InstalledFontCollection installedFontCollection = new System.Drawing.Text.InstalledFontCollection();
FontFamily[] fontFamilies = installedFontCollection.Families;
System.Drawing.Font objFont = new System.Drawing.Font(fontFamilies.Where(x => x.Name == "Arial").FirstOrDefault(),10);
Я пытался использовать другой шрифт, но результат всегда один и тот же. Что-то я пропускаю? Если нет, в чем может быть причина?
Спасибо
РЕДАКТИРОВАТЬ: Чтобы ответить на вопрос, что именно я хочу, рассмотрим это:
Это изображение - скриншот веб-сайта, который я делаю. Диаграмма в середине была сгенерирована с использованием charts.js, но ее ограничение заставляет меня рисовать текст как фоновое изображение. На самом деле он занимает большую часть моего экрана, поэтому он не может стать намного больше, чем этот. Как видите, шрифт текста довольно размыт, и я бы просто хотел, чтобы его было легче читать. Я думал, что проблема была в шрифте, но я не знаю.
Я не очень знаком со всей частью рисования изображений в C #, поэтому, если есть лучший способ рисовать мой текст (который может меняться в зависимости от многих переменных), я с удовольствием попробую другие вещи.