0

可能重复:
如何为单个字符着色并保持适当的间距/字距调整/对齐?

使用 GDI+,我想将字符串分解为单个字符,以便可以在字符串中的任何位置更改字体类型、大小或粗细。

用法示例:

  1. ****B****老第一个字符。

  2. 第一个字符使用古英语字体(即“从前”->“O”=古英语字体)

  3. 句子中为特定单词(字符组)加下划线。

我找不到任何例子。我不知道如何解决这个问题。

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
4

1 回答 1

0

据我所知,没有任何东西以这种方式构建......你应该完成绘制字符块的所有逻辑,仅在一行中非常“容易”,但处理行尾并开始写入下一行可能很棘手。

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

有一些控件可以更轻松地使用 RichTextBox,这是其中之一:http: //www.codeproject.com/Articles/30799/Extended-RichTextBox

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

You can add the code that makes the magic of printing RichTextBox content in the Extended RichTextBox Control.

于 2012-12-27T17:16:45.903 回答