Wenn Sie es in einen Strom geladen werden kann, versuchen Sie einen PrivateFontCollection verwenden. Beispielcode in my answer to another question.
BEARBEITEN: Siehe System.Net.WebRequest.GetRequestStream, laden Sie den URI in einen Stream und laden Sie diesen Stream dann in den PFC, wie im verknüpften Code erwähnt.
Außerdem würde ich die Datei lokal speichern und zuerst dort suchen, damit Sie sie nicht jedes Mal herunterladen müssen, wenn Sie das Programm ausführen.
BEARBEITEN SIE WIEDER: Sorry, nicht WebRequest.GetRequestStream, wollen Sie WebResponse.GetResponseStream(). Hier ist ein Beispielcode, um genau das zu tun, wonach Sie suchen.
using System;
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Net;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace RemoteFontTest
{
public partial class Form1 : Form
{
readonly PrivateFontCollection pfc = new PrivateFontCollection();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
WebRequest request = WebRequest.Create(@"http://somedomain.com/foo/blah/somefont.ttf");
request.Credentials = CredentialCache.DefaultCredentials;
WebResponse response = request.GetResponse();
using (Stream fontStream = response.GetResponseStream())
{
if (null == fontStream)
{
return;
}
int fontStreamLength = (int)fontStream.Length;
IntPtr data = Marshal.AllocCoTaskMem(fontStreamLength);
byte[] fontData = new byte[fontStreamLength];
fontStream.Read(fontData, 0, fontStreamLength);
Marshal.Copy(fontData, 0, data, fontStreamLength);
pfc.AddMemoryFont(data, fontStreamLength);
Marshal.FreeCoTaskMem(data);
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
using (SolidBrush brush = new SolidBrush(Color.Black))
{
using (Font font = new Font(pfc.Families[0], 32, FontStyle.Regular, GraphicsUnit.Point))
{
e.Graphics.DrawString(font.Name, font, brush, 10, 10, StringFormat.GenericTypographic);
}
}
}
}
}
: S Gibt es keinen einfacheren Weg? Das Problem ist, ich kann es nicht funktionieren, wenn ich die Schriftart in "Ressourcen" habe, also suche ich nach der einfachsten Lösung. – ozke
Ich wollte es nicht von einer Ressource laden, aber versuchen Sie herauszufinden, wie Sie Ihre Schriftart von der angegebenen URL in eine Art Stream (FileStream, MemoryStream, etc ...) herunterladen und dann in die PFC laden . Mach dir keine Sorgen über den Ressourcenteil des Codes, den ich verlinkt habe. –