ユーザー設定の描画を実行する場合、フォームまたはコントロールに描画されたテキストの中央揃えが必要になる場合があります。 適切な書式設定オブジェクトを作成し、適切な書式フラグを設定することで、 DrawString または DrawText メソッドで描画されたテキストを簡単に配置できます。
GDI+ (DrawString) で中央揃えテキストを描画するには
StringFormatを使用して、適切なDrawStringメソッドで中央揃えのテキストを指定します。
string text1 = "Use StringFormat and Rectangle objects to" + " center text in a rectangle."; using (Font font1 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point)) { Rectangle rect1 = new Rectangle(10, 10, 130, 140); // Create a StringFormat object with the each line of text, and the block // of text centered on the page. StringFormat stringFormat = new StringFormat(); stringFormat.Alignment = StringAlignment.Center; stringFormat.LineAlignment = StringAlignment.Center; // Draw the text and the surrounding rectangle. e.Graphics.DrawString(text1, font1, Brushes.Blue, rect1, stringFormat); e.Graphics.DrawRectangle(Pens.Black, rect1); }
Dim text1 As String = "Use StringFormat and Rectangle objects to" & _ " center text in a rectangle." Dim font1 As New Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point) Try Dim rect1 As New Rectangle(10, 10, 130, 140) ' Create a StringFormat object with the each line of text, and the block ' of text centered on the page. Dim stringFormat As New StringFormat() stringFormat.Alignment = StringAlignment.Center stringFormat.LineAlignment = StringAlignment.Center ' Draw the text and the surrounding rectangle. e.Graphics.DrawString(text1, font1, Brushes.Blue, rect1, stringFormat) e.Graphics.DrawRectangle(Pens.Black, rect1) Finally font1.Dispose() End Try
GDI で中央揃えテキストを描画するには (DrawText)
適切なTextFormatFlagsメソッドを使用してテキストを折り返すだけでなく、テキストを垂直方向および水平方向に中央揃えするには、DrawText列挙体を使用します。
string text2 = "Use TextFormatFlags and Rectangle objects to" + " center text in a rectangle."; using (Font font2 = new Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point)) { Rectangle rect2 = new Rectangle(150, 10, 130, 140); // Create a TextFormatFlags with word wrapping, horizontal center and // vertical center specified. TextFormatFlags flags = TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter | TextFormatFlags.WordBreak; // Draw the text and the surrounding rectangle. TextRenderer.DrawText(e.Graphics, text2, font2, rect2, Color.Blue, flags); e.Graphics.DrawRectangle(Pens.Black, rect2); }
Dim text2 As String = "Use TextFormatFlags and Rectangle objects to" & _ " center text in a rectangle." Dim font2 As New Font("Arial", 12, FontStyle.Bold, GraphicsUnit.Point) Try Dim rect2 As New Rectangle(150, 10, 130, 140) ' Create a TextFormatFlags with word wrapping, horizontal center and ' vertical center specified. Dim flags As TextFormatFlags = TextFormatFlags.HorizontalCenter Or _ TextFormatFlags.VerticalCenter Or TextFormatFlags.WordBreak ' Draw the text and the surrounding rectangle. TextRenderer.DrawText(e.Graphics, text2, font2, rect2, Color.Blue, flags) e.Graphics.DrawRectangle(Pens.Black, rect2) Finally font2.Dispose() End Try
コードのコンパイル
上記のコード例は Windows フォームで使用できるように設計されており、PaintEventArgsのパラメーターであるe
PaintEventHandlerが必要です。
こちらも参照ください
- 方法: GDI を使用してテキストを描画する
- フォントとテキストの使用
- 方法: フォント ファミリとフォント を作成する
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET Desktop feedback