【问题标题】:GDI+ DrawString() - Treat a string as a group of individual characters [duplicate]GDI + DrawString() - 将字符串视为一组单独的字符[重复]
【发布时间】:2012-12-13 01:22:28
【问题描述】:

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

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

用法示例:

  1. ****B****大写第一个字符。

  2. 对第一个字符使用古英语字体(即“Once on a time” -> “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

【问题讨论】:

    标签: .net gdi+ gdi


    【解决方案1】:

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

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

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

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

    您可以在扩展的 RichTextBox 控件中添加使打印 RichTextBox 内容具有魔力的代码。

    【讨论】:

      猜你喜欢
      • 2012-11-15
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-05
      • 2013-08-19
      相关资源
      最近更新 更多