Cam*_*tin 7 .net vb.net fonts label visual-studio-2008
我正在使用Visual Studio 2008在Visual Basic .NET中开发Windows窗体应用程序.
我正在尝试根据用户首选项在运行时编写字体(系列名称,字体大小和样式),并将它们应用于标签.
为了简化用户界面,以及需要使用相同字体的多台机器之间的兼容性,我不会使用InstalledFontCollection,而是使用一组按钮设置几个选定的字体,我知道它们存在在所有机器中(像Verdana这样的字体).
所以,我必须在一个将创建字体的模块上创建一个Public Sub,但我不知道如何编写它.还有四个CheckBoxes可以设置样式,Bold,Italic,Underline和Strikeout.
我该怎么编码呢?该SomeLabel.Font.Bold属性是只读的,而且似乎像"宋体"这样的字符串转换为fontFamily类型时是一个问题.(它只是说不能这样做)
喜欢上
Dim NewFontFamily As FontFamily = "Times New Roman"
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Phi*_*rie 12
这应该可以解决您的字体问题:
Label1.Font = New Drawing.Font("Times New Roman", _
16, _
FontStyle.Bold or FontStyle.Italic)
Run Code Online (Sandbox Code Playgroud)
创建此字体的函数的可能实现可能如下所示:
Public Function CreateFont(ByVal fontName As String, _
ByVal fontSize As Integer, _
ByVal isBold As Boolean, _
ByVal isItalic As Boolean, _
ByVal isStrikeout As Boolean) As Drawing.Font
Dim styles As FontStyle = FontStyle.Regular
If (isBold) Then
styles = styles Or FontStyle.Bold
End If
If (isItalic) Then
styles = styles Or FontStyle.Italic
End If
If (isStrikeout) Then
styles = styles Or FontStyle.Strikeout
End If
Dim newFont As New Drawing.Font(fontName, fontSize, styles)
Return newFont
End Function
Run Code Online (Sandbox Code Playgroud)
字体是不可变的,这意味着一旦创建它们就无法更新.因此,您注意到的所有只读属性.
| 归档时间: |
|
| 查看次数: |
49613 次 |
| 最近记录: |