FORM(私はVB 2010を使用しました)を作成し、このコードを追加します。 2色でフォームに3行書きます。 途中であなたを得るかもしれません。あなたに新しい機能については、MSDNのヘルプにお尋ねください。
Private Sub Form1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim chRs(0) As CharacterRange
Dim sbRs(0) As SolidBrush
Dim flRs(0) As SolidBrush
Dim blueBrush As New SolidBrush(Color.Blue)
Dim whiteBrush As New SolidBrush(Color.White)
Dim redBrush As New SolidBrush(Color.Red)
Dim EditFont As New Font("Courier New", 9)
Dim stringFormat As New StringFormat
Dim aRectangle As Rectangle
Dim RectHeight As Integer = 20
For i = 1 To 3
Dim txt As String = "a string " & CStr(i)
If i = 2 Then
sbRs(0) = blueBrush
Else
sbRs(0) = redBrush
End If
flRs(0) = whiteBrush
chRs(0) = New CharacterRange(0, txt.Length())
Dim chRsa As Array = Array.CreateInstance(GetType(CharacterRange), 1)
Array.Copy(chRs, 0, chRsa, 0, 1)
aRectangle = New Rectangle(0, CInt((i - 1) * RectHeight), ClientRectangle.Size.Width, RectHeight) ' x, y, w, h
stringFormat.SetMeasurableCharacterRanges(chRsa)
Dim stringRegions As Array = Array.CreateInstance(GetType([Region]), 1)
stringRegions = e.Graphics.MeasureCharacterRanges(txt, EditFont, aRectangle, stringFormat)
Dim measureRect1 As RectangleF = stringRegions(0).GetBounds(e.Graphics)
Dim g As Graphics = e.Graphics
g.FillRectangle(flRs(0), measureRect1)
g.DrawString(txt.Substring(chRs(0).First, chRs(0).Length), EditFont, sbRs(0), CSng(measureRect1.X), CSng(measureRect1.Y))
Next
End Sub
あなたはオブジェクトを廃棄していません。 – LarsTech
どのオブジェクトを処分する必要がありますか?私が考えることができる唯一のものはGraphicsオブジェクトですが、私はそれを作成せず、そのまま使用します! – Martin
基本的には、* IDispose *:Brushes and Fonts、StringFormatを実装するもの。 'Using(...){}'ブロックは、使い捨てオブジェクトに対してのみ機能するので、ブロックの最後にそれを破棄して、オブジェクトが自分自身の後でクリーンアップされていることを確認する良い方法です。あなたの例では、あなたは正しいので、あなたはそれを作成していない、あなたは、グラフィックオブジェクトを処分しないだろう。 – LarsTech