Bagikan melalui


Cara: Meratakan Teks Yang Digambar

Saat Anda melakukan gambar kustom, Anda mungkin sering ingin mempusatkan teks yang digambar pada formulir atau kontrol. Anda dapat dengan mudah meratakan teks yang digambar DrawString dengan metode atau DrawText dengan membuat objek pemformatan yang benar dan mengatur bendera format yang sesuai.

Untuk menggambar teks tengah dengan GDI+ (DrawString)

  1. StringFormat Gunakan dengan metode yang sesuai DrawString untuk menentukan teks terpusat.

    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
    

Untuk menggambar teks tengah dengan GDI (DrawText)

  1. TextFormatFlags Gunakan enumerasi untuk membungkus serta teks yang berpusat secara vertikal dan horizontal dengan metode yang sesuaiDrawText.

    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
    

Mengompilasi Kode

Contoh kode sebelumnya dirancang untuk digunakan dengan Formulir Windows, dan memerlukan PaintEventArgse, yang merupakan parameter dari PaintEventHandler.

Baca juga