c# - gratis - fuentes windows 10
Uso de fuentes TTF personalizadas para la representación de imágenes DrawString (2)
Encontré una solución para usar fuentes personalizadas.
// ''PrivateFontCollection'' is in the ''System.Drawing.Text'' namespace
var foo = new PrivateFontCollection();
// Provide the path to the font on the filesystem
foo.AddFontFile("...");
var myCustomFont = new Font((FontFamily)foo.Families[0], 36f);
Ahora myCustomFont
se puede usar con el método Graphics.DrawString según lo previsto.
Estoy usando GDI + en el lado del servidor para crear una imagen que se transmite al navegador del usuario. Ninguna de las fuentes estándar se ajusta a mis requisitos, por lo que quiero cargar una fuente TrueType y usar esta fuente para dibujar mis cadenas en el objeto gráfico:
using (var backgroundImage = new Bitmap(backgroundPath))
using (var avatarImage = new Bitmap(avatarPath))
using (var myFont = new Font("myCustom", 8f))
{
Graphics canvas = Graphics.FromImage(backgroundImage);
canvas.DrawImage(avatarImage, new Point(0, 0));
canvas.DrawString(username, myFont,
new SolidBrush(Color.Black), new PointF(5, 5));
return new Bitmap(backgroundImage);
}
myCustom
representa una fuente que no está instalada en el servidor, pero para la cual tengo el archivo TTF.
¿Cómo puedo cargar el archivo TTF para que pueda usarlo en el renderizado de cadenas GDI +?
Solo para dar una solución más completa
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Drawing.Text;
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string fontName = "YourFont.ttf";
PrivateFontCollection pfcoll = new PrivateFontCollection();
//put a font file under a Fonts directory within your application root
pfcoll.AddFontFile(Server.MapPath("~/Fonts/" + fontName));
FontFamily ff = pfcoll.Families[0];
string firstText = "Hello";
string secondText = "Friend!";
PointF firstLocation = new PointF(10f, 10f);
PointF secondLocation = new PointF(10f, 50f);
//put an image file under a Images directory within your application root
string imageFilePath = Server.MapPath("~/Images/YourImage.jpg");
Bitmap bitmap = (Bitmap)System.Drawing.Image.FromFile(imageFilePath);//load the image file
using (Graphics graphics = Graphics.FromImage(bitmap))
{
using (Font f = new Font(ff, 14, FontStyle.Bold))
{
graphics.DrawString(firstText, f, Brushes.Blue, firstLocation);
graphics.DrawString(secondText, f, Brushes.Red, secondLocation);
}
}
//save the new image file within Images directory
bitmap.Save(Server.MapPath("~/Images/" + System.Guid.NewGuid() + ".jpg"));
Response.Write("A new image has been created!");
}
}