J'essaie de créer par programme une bitmap avec une police spécifiée dans ASP.Net. L'idée est que le texte, le nom de la police, la couleur de la taille etc. seront transmis à partir des variables et un bitmap du texte utilisant la police etc. sera retourné. Cependant, j'ai constaté que je suis seulement capable de le faire en utilisant le code suivant avec certaines polices.Impossible d'utiliser certaines polices par programme dans ASP.Net
<div>
<%
string fontName = "Segoe Script"; //Change Font here
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(100, 100);
System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bmp);
System.Drawing.Font fnt = new System.Drawing.Font(fontName, 20);
System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
graph.DrawString("Help", fnt, brush, new System.Drawing.Point(10, 10));
bmp.Save(@"C:\Development\Path\image1.bmp");
this.Image1.ImageUrl = "http://mysite/Images/image1.bmp";
%>
<asp:Label ID="Label1" runat="server" Text="Label" Font-Names="Segoe Script"> <%Response.Write("Help"); %></asp:Label> //Change font here
<asp:Image ID="Image1" runat="server" />
</div>
Si je change le nom de la police dans les zones indiquées par les commentaires à Arial ou Verdana l'image et l'étiquette apparaissent avec la police correcte. Si, cependant, je change le nom de la police dans les deux emplacements pour quelque chose "Segoe Script" l'étiquette apparaîtra dans Segoe Script, mais l'image est dans ce qui ressemble à Arial.
Mise à jour:
Sur la base de cette question here j'ai pu le faire fonctionner en utilisant un PrivateFontCollection() et le chargement du fichier de police comme si.
<div>
<%
string TypeFaceName = "Segoe Script";
System.Drawing.Text.PrivateFontCollection fnts = new System.Drawing.Text.PrivateFontCollection();
fnts.AddFontFile(@"C:\Development\Fonts\segoesc.ttf");
System.Drawing.FontFamily fntfam = new System.Drawing.FontFamily(TypeFaceName);
System.Drawing.Font fnt = new System.Drawing.Font(fntfam, 13);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(100, 100);
System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(bmp);
System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);
graph.DrawString("Help", fnt, brush, new System.Drawing.Point(10, 10));
bmp.Save(@"C:\Development\Path\Images\image1.bmp");
this.Image1.ImageUrl = "http://MySite/Images/image1.bmp";
%>
<asp:Label ID="Label1" runat="server" Text="Label" Font-Names="Segoe Script"> <%Response.Write("Help"); %></asp:Label>
<asp:Image ID="Image1" runat="server" />
</div>
La police est installée sur le serveur Web et je peux créer manuellement une image avec la police en utilisant paint.net. Le code que j'ai posté est juste pour voir si cela peut être fait. Merci. – etoisarobot