GDI+ を使用して、黒で縁取られた白いテキストを描画しています。
グラフィック パスを使用してみましたが、(特に小さいテキスト サイズを使用した場合) 悪い結果が得られたので、テキストの周囲の 8 ピクセルの位置に黒のテキストをレンダリングし、その上に白を描画することを考えました。
結果は私が望むものですが、コードはそれほど効率的ではないようです。同じ結果を達成するためのより良い方法はありますか?
私のコード:
Private _whiteFont As New Font("Segoe UI", 8)
Private _blackFont As New Font("Segoe UI", 8)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
DrawTextWithOutline("12", New Point(18, 9))
End Sub
Private Sub DrawTextWithOutline(ByVal text As String, ByVal pt As Point)
Using g As Graphics = Me.CreateGraphics
g.DrawString(text, _blackFont, Brushes.Black, pt.X - 1, pt.Y) 'left
g.DrawString(text, _blackFont, Brushes.Black, pt.X, pt.Y + 1) 'top
g.DrawString(text, _blackFont, Brushes.Black, pt.X + 1, pt.Y) 'right
g.DrawString(text, _blackFont, Brushes.Black, pt.X, pt.Y + 1) 'bottom
g.DrawString(text, _blackFont, Brushes.Black, pt.X - 1, pt.Y - 1) 'top left
g.DrawString(text, _blackFont, Brushes.Black, pt.X - 1, pt.Y + 1) 'bottom left
g.DrawString(text, _blackFont, Brushes.Black, pt.X + 1, pt.Y - 1) 'top right
g.DrawString(text, _blackFont, Brushes.Black, pt.X + 1, pt.Y + 1) 'bottom right
g.DrawString(text, _whiteFont, Brushes.White, pt)
End Using
End Sub
サンプル結果: