2012-12-27 30 views
0

可能重複:
How to color individual characters and maintain proper spacing/kerning/alignment?GDI +的DrawString() - 將一個字符串作爲一組單個字符

使用GDI +,我想起來字符串分解爲單個字符,以便我可以在字符串中的任何位置更改字體類型,大小或重量。

應用實例:

  1. **** ****乙掩門第一個字符。

  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 

回答

0

據我所知沒有任何內置的那樣......你應該做的繪製字符塊的所有的邏輯,在被只是一行很「容易」,但處理行結束並開始寫下一行可能會很棘手。

爲了讓用戶更改和格式化文本,我將使用的是一個RichTextBox。

有跡象表明,使得使用更簡單的RichTextBox一些控制,這就是其中之一: http://www.codeproject.com/Articles/30799/Extended-RichTextBox

一旦你的文本編輯器,允許用戶格式化的東西,你需要打印出來。 下面是如何打印RichTextBox的內容一些例子:

您可以添加,使得在擴展RichTextBox控件打印RichTextBox的內容魔術的代碼。

相關問題