[转]嵌入字体到程序 Winform C#

http://www.cnblogs.com/top5/archive/2011/06/20/2084942.html


程序安装字体或直接调用非注册字体[c#]
1.安装字体
//程序直接将字体文件安装的系统中。
函数声明:
[DllImport("kernel32.dll", SetLastError = true)]
static extern int WriteProfileString(string lpszSection, string lpszKeyName, string lpszString);

[DllImport("user32.dll")]
public static extern int SendMessage(int hWnd, // handle to destination window
uint Msg,
int wParam,
int lParam
);

[DllImport("gdi32")]
public static extern int AddFontResource(string lpFileName);

public static bool installFont(string FontFileName, string FontName)
{
string WinFontDir = System.Environment.GetEnvironmentVariable("WINDIR") + "\\fonts";
//string FontFileName = "DS-Digital Bold Italic.TTF";
//string FontName = "DS-Digital Bold Italic";
int Ret;
int Res;
string FontPath;
//const int WM_FONTCHANGE = 0x001D;
//const int HWND_BROADCAST = 0xffff;
FontPath = WinFontDir + "\\" + FontFileName;
try
{
if (!File.Exists(FontPath))
{
File.Copy(System.Windows.Forms.Application.StartupPath + "\\font\\" + FontFileName, FontPath); //font是程序目录下放字体的文件夹
Ret = AddFontResource(FontPath);

//Res = SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
//WIN7下编译会出错,不清楚什么问题。注释就行了。
Ret = WriteProfileString("fonts", FontName + "(TrueType)", FontFileName);
}
}catch(Exception ex)
{
MessageBox.Show("[ "+FontName + " ]字体安装失败!原因:"+ex.Message);
return false;
}
return true;
}

函数的使用:
fonts.installFont(字体文件, 字体名称)//fonts类名
fonts.installFont("C39P36DmTt.TTF", "C39P36DmTt")

2.调用字体文件
//程序直接调用字体文件,不用安装到系统字库中。
设置字体对象:
String ls_appPath = System.Windows.Forms.Application.StartupPath + "\\font\\";//font是程序目录下放字体的文件夹
String fontFile1 = ls_appPath + "C39P36DmTt.TTF";
String fontFile2 = ls_appPath + "GWGLYPTT.TTF";
......
pfc.AddFontFile(fontFile1);//字体文件的路径
pfc.AddFontFile(fontFile2);//字体文件的路径
........
Font myFont1 = new Font(pfc.Families[0], 41, FontStyle.Regular, GraphicsUnit.Point, 0);//myFont1就是你创建的字体对象
Font myFont2 = new Font(pfc.Families1], 31, FontStyle.Bold | FontStyle.Regular);

使用字体:
label1.Font = myFont1;

[转]嵌入字体到程序 Winform C#,布布扣,bubuko.com

时间: 2024-10-12 19:47:49

[转]嵌入字体到程序 Winform C#的相关文章

在winform嵌入外部应用程序

应朋友要求,需要将一个第三方应用程序嵌入到本程序WinForm窗口,以前在VB6时代做过类似的功能,其原理就是利用Windows API中FindWindow函数找到第三方应用程序句柄,再利用SetParent函数,将该句柄设置为本窗口的子窗口. 网上搜索大部分都是利用System.Diagnostics.Process获取外部应用程序的MainWindowHandle,貌似以前的COM应用程序可以,在Win10下调用Process.MainWindowHandle会提示“应用程序已退出”,也就

C#将exe运行程序嵌入到自己的winform窗体中

以下例子是将Word打开,然后将它嵌入到winform窗体中,效果如下图:C将exe运行程序嵌入到自己的winform窗体中 - kingmax_res - iSport注意:该方法只适用于com的exe(如word,Excel之类),.net的编的exe就不能用这用方法嵌入到窗体中. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Syst

把任意的EXE嵌入到自己程序中

把任意的EXE嵌入到自己程序中 taoyuan19822008-08-24上传 Delphi把任意的EXE嵌入到自己程序中的程序 资源积分:0分 下载次数:327 资源类型:其他 资源大小:175KB 资源得分: (42位用户参与评分) 把任意的EXE嵌入到自己程序中 进入下载页 收藏(1) 评论(14) 举报 VIP下载  免积分60元/年(1200次) 相关推荐 把任意的EXE嵌入到自己程序中 把任意的EXE嵌入到自己程序中 您可能还需要 Web程序设计 ...简单的C#宿...matlab

CSS3 Web嵌入字体

CSS3嵌入Web字体一直以来Web设计师在设计网页时都想为Web页面添加一些优雅的字体,但浏览器仅限于使用用户在其系统上安装的字体呈现文本,这样一来让大部分网站受限于字体数量的不足.多年来一直都是使用图片替换文本的方式来解决页面上使用优雅字体,但这种对于频繁更换文本的网站来说是一件不切实际的事,以致于我们坚持使用这些少量的Web字体.随着技术的不断发展,出现在Web页面中 使用Flash和JavaScript技术来弥补这一不足.虽然这些方法已经是不错的应急措施, 允许包含自己的字体,但是它们拥

渐变色彩 省略标记 嵌入字体 文本阴影

1.渐变色彩 CSS3 Gradient 分为线性渐变(linear)和径向渐变(radial).由于不同的渲染引擎实现渐变的语法不同,这里我们只针对线性渐变的 W3C 标准语法来分析其用法,其余大家可以查阅相关资料.W3C 语法已经得到了 IE10+.Firefox19.0+.Chrome26.0+ 和 Opera12.1+等浏览器的支持. 这一小节我们来说一下线性渐变: 参数: 第一个参数:指定渐变方向,可以用“角度”的关键词或“英文”来表示: (单击图片可放大) 第一个参数省略时,默认为“

WPF中嵌入普通Win32程序的方法

公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系统中来,让使用者看起来它们好像是一个程序. 在MSDN中有专门的章节提到了在WPF中嵌入Win32控件的办法,那就是使用 HwndHost ,只要把 Win32控件的句柄传递给 HwndHost 就可以了.MSDN中的例子演示的都是在同一个进程内创建的 Win32控件,我一开始认为只要通过FindW

嵌入字体@font-face

嵌入字体@font-face @font-face能够加载服务器端的字体文件,让浏览器端可以显示用户电脑里没有安装的字体. 语法: @font-face { font-family : 字体名称; src : 字体文件在服务器上的相对或绝对路径; } 这样设置之后,就可以像使用普通字体一样在(font-*)中设置字体样式. 比如: p { font-size :12px; font-family : "My Font"; /*必须项,设置@font-face中font-family同样

R - 变化plot字形,嵌入字体以pdf

近期使用R绘图遇到两个问题 1. 使用不同的字体 2. 保存 plot 至 pdf 当字体嵌入pdf (embed the font) 使用extrafont和Ghostscript能够解决这两个问题. 1. Ghostscript 安装: http://www.ghostscript.com/download/gsdnld.html 2. extrafont (R package) 下面命令都是在R中执行 - 安装 > install.packages("extrafont")

Qt界面中嵌入其他exe程序的界面,使用Qt5

下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/49802993,感谢原作者. 下面是具体的实现方法,用Windows自带的计算器程序做例子.主要的思路就是获取到计算器程序的窗口类名称,然后在Qt中利用QWindow的静态函数fromWinId,创建出QWindow对象,然后将这个对象放到一个QWidget中. 首先是获取计算器程序的窗口类名称,主