比如有个字体文件d:\123.ttf,不安装这种字体,如何获取这种字体的名称等信息,并且预览其效果?
解决方案 »
- 上端位VB编程实现和下位机FPGA的串口通信问题
- 使用CommonDialog后,系统路径发生变化,如何解决?
- 关于mshflexgrid的问题。如何判断当前鼠标移动到所在单元格的row,col(没发生单击)
- 用ASP调用次数频繁后,出现代码不能执行,提示“ActiveX 部件不能创建对象”的错误
- 问个有关DLL的问题 对于一个DLL文件 我们有可能看到它的原代码吗?
- 如何将内部网UDP端口映射到公共网上
- 关于txt文本操作的问题请教
- 如何拦截一个程序的运行
- ==============一个恢复ACCESS数据库的难题!!!================真难!
- 如何可以选择路径的备份acess数据库?
- 求高手幫我看一下這個代碼 我附上源文件和圖(關於按鍵精靈的)
- VBscript调用应用程序如何隐藏窗口
http://www.vbgood.com/viewthread.php?tid=74489
我看了那个例子,也查了下GetGlyphOutline的用法,基本没看懂。-_-!!
我说的"不安装这种字体",只是说我预览完这种字体效果后,这个字体文件不会仍然留在fonts文件夹里就好了。
用AddFontResource可以临时把一个字体文件中的字体添加到系统字体中,而且用完后可以用RemoveFontResource删除掉,但是AddFontResource的返回值是一个long,如何获取它添加的字体并指定到label的font属性呢?
就是别人打的Word文档用了一些特殊字体,拿到你电脑里面用,照样可以显示、预览,但你电脑里面并没有这种字体。不知道这是用的什么技术?顶...
运行FontLister,当前系统中已经安装的字体以列表形式出现在软件的左侧栏,而右侧栏则显示了当前选择字体的具体样式。选择字体后点击“查看→字体信息”,还会弹出一个字体属性窗口。
提示:FontLister默认显示的字体样例为英文,这就造成了预览中文字体时并不能体现其特性。解决的办法就是在右侧窗口中输入一些中文字符,以方便我们对中文字体的预览。
除了查看已经安装的字体,FontLister还可以预览未安装字体样式。点击“查看→更改字体类型→未安装”,就会弹出一个“浏览未安装字体”窗口,在“文件夹”处定位到包含了未安装字体的文件夹,文件夹内的字体文件将会以列表形式出现在“字体列表”框中,点击“确定”按钮,就可以在FontLister查看未安装字体的样式了
这个函数返回的是添加的字体数量,并非句柄,所以嘛....基本不能用。
但是,但可是,你既然可以添加了,也就是说可以知道字体的名字了。用DrawText根据字体名字应该可以直接绘制出文字吧?
Private Declare Function RemoveFontResource Lib "gdi32" Alias "RemoveFontResourceA" (ByVal lpFileName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const HWND_BROADCAST = &HFFFF&
Private Const WM_FONTCHANGE = &H1DPrivate Sub Form_Load()
Text1.Text = App.Path & "\华康海报体.ttf" '测试用的字体(当前系统中没有这种字体)
List1.Clear
Dim I As Integer '获取所有系统字体名称并添加到list1中
For I = 0 To Screen.FontCount - 1
List1.AddItem Screen.Fonts(I)
Next
End SubPrivate Sub Command2_Click()
Debug.Print AddFontResource(Text1.Text) '将测试字体添加到系统字体列表
Call SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) '广播系统字体变化这一消息
End SubPrivate Sub Command1_Click() '获取新增加的字体名称
Me.MousePointer = 11
Dim I As Integer, j As Integer
For I = 0 To Screen.FontCount - 1
For j = 0 To List1.ListCount - 1
If Screen.Fonts(I) = List1.List(j) Then GoTo NextOne
Next
List2.AddItem Screen.Fonts(I) '新增加的字体添加到list2中
NextOne:
Next
Me.MousePointer = 0
End SubPrivate Sub List2_Click() '用Label2预览该字体效果
Label2.Caption = List2.Text
Label2.FontSize = 20
Label2.FontName = List2.Text
End SubPrivate Sub Command3_Click() '从系统字体列表中移除这种字体
Debug.Print RemoveFontResource(Text1.Text)
End Sub
另外如何删除一种系统中现有的字体呢?主要是如何获取某种字体所对应的系统fonts文件夹里的字体文件名呢?