GDI + DrawString() - 将字符串视为一组单独的字符

时间:2012-12-27 17:00:43

标签: .net gdi+ gdi

  

可能重复:
  How to color individual characters and maintain proper spacing / kerning / alignment?

使用GDI +,我想将一个字符串分成单个字符,这样我就可以在字符串中的任何位置更改字体类型,大小或重量。

使用示例:

  1. **** B ****第一个角色。

  2. 使用旧英文字体作为第一个字符(即“曾几何时” - >“O”=旧英文字体)

  3. 在句子中 中强调特定单词(字符组)

  4. 我找不到任何例子。我不确定如何处理这个问题。

    Public Class Character
        Public Property ID As Integer
        Public Property Value As Char
        Public Property CharacterFont As Font
        Public Property CharacterColor As Brush
    
        Public Sub New()
            CharacterFont = New Font("Times New Roman", 12)
        End Sub
    End Class
    

    ...

    Public Class CharacterBlock
        Private _characters As New List(Of Character)
        Public Property Alignment As StringAlignment
    
        Public Sub New()
            Alignment = StringAlignment.Center
        End Sub
    
        Public Sub New(p_characters As List(Of Character))
            Me.New()
            _characters = p_characters
        End Sub
    
        Public Sub New(p_characters As String)
            Me.New()
            _characters = (From s In p_characters.ToList Select New Character With {.Value = s}).ToList
        End Sub
    
        Public Sub New(p_characters As String, p_font As System.Drawing.Font)
            Me.New()
            _characters = (From s In p_characters.ToList Select New Character With {.Value = s, .CharacterFont = p_font}).ToList
        End Sub
    
        'TODO: Add methods to measure and draw character blocks 
    End Class
    

1 个答案:

答案 0 :(得分:0)

据我所知,没有任何东西以这种方式构建......你应该完成绘制字符块的所有逻辑,只需一行就可以“轻松”但是处理行的结束并开始写下一行可能很棘手。

为了让用户更改和格式化文本,我将使用的是RichTextBox。

有一些控件使得使用RichTextBox更容易,这是其中之一: http://www.codeproject.com/Articles/30799/Extended-RichTextBox

一旦你有了允许用户格式化的文本编辑器,你需要打印它。 以下是如何打印RichTextBox内容的一些示例:

您可以添加能够在Rich RichTextBox控件中打印RichTextBox内容的神奇代码。