none
Imprimir Label Centralizado Usando o PrintDocument RRS feed

  • Pergunta

  • Bom dia Pessoal, como faço para imprimir uma Label conforme as configurações do Form ?

    Fiz a configuração da Label para sair Centralizado, AutoSize = False e TextAlign = Middle Center, Porém na Impressão ele não sai Centralizado... Estou Usando o PrintDocument, com o código Abaixo:

    Private Sub PrintDocument1_PrintPage(sender As System.Object, e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

            lblnomecracha.TextAlign = ContentAlignment.MiddleCenter
            Dim G As Graphics = e.Graphics
            Dim c As String = lblnomecracha.Text
            Dim fontetexto As New Font("Swis721 Cn BT", lblnomecracha.Font.Size, FontStyle.Bold, System.Drawing.GraphicsUnit.Point)
            Dim P As New Point(0, 261)
            G.DrawString(c, fontetexto, Brushes.Orange, P)

    End Sub

    OBS: Não queria usar o New Point(0, 261), Queria que ele Buscasse a posição exatamente como ele esta no Form.

    quinta-feira, 13 de fevereiro de 2014 13:44

Respostas

  • Você pode usar o enum StringFormatFlags para definir uma informação de layout de uma string.

    Dim sff As New StringFormatFlags()
    sff.LineAlignment = StringAlignment.Center
    sff.Alignment = StringAlignment.Center
    
    G.DrawString(c, fontetexto, Brushes.Orange, Me.ClientRectangle, sff)

    Ou pode usar o método DrawText da classe TextRenderer.

    TextRenderer.DrawText(G, c, fontetexto, Me.ClientRectangle, Color.Orange, TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter)

    Método TextRenderer.DrawText:
    http://msdn.microsoft.com/en-us/library/system.windows.forms.textrenderer.drawtext%28v=vs.110%29.aspx

    Enumeração StringFormatFlags:
    http://msdn.microsoft.com/en-us/library/system.drawing.stringformatflags%28v=vs.110%29.aspx

    Enumeração TextFormatFlags:
    http://msdn.microsoft.com/en-us/library/system.windows.forms.textformatflags%28v=vs.110%29.aspx

    • Marcado como Resposta Giovani Cr quarta-feira, 19 de fevereiro de 2014 12:19
    quinta-feira, 13 de fevereiro de 2014 21:34

Todas as Respostas

  • Você pode usar o enum StringFormatFlags para definir uma informação de layout de uma string.

    Dim sff As New StringFormatFlags()
    sff.LineAlignment = StringAlignment.Center
    sff.Alignment = StringAlignment.Center
    
    G.DrawString(c, fontetexto, Brushes.Orange, Me.ClientRectangle, sff)

    Ou pode usar o método DrawText da classe TextRenderer.

    TextRenderer.DrawText(G, c, fontetexto, Me.ClientRectangle, Color.Orange, TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter)

    Método TextRenderer.DrawText:
    http://msdn.microsoft.com/en-us/library/system.windows.forms.textrenderer.drawtext%28v=vs.110%29.aspx

    Enumeração StringFormatFlags:
    http://msdn.microsoft.com/en-us/library/system.drawing.stringformatflags%28v=vs.110%29.aspx

    Enumeração TextFormatFlags:
    http://msdn.microsoft.com/en-us/library/system.windows.forms.textformatflags%28v=vs.110%29.aspx

    • Marcado como Resposta Giovani Cr quarta-feira, 19 de fevereiro de 2014 12:19
    quinta-feira, 13 de fevereiro de 2014 21:34
  • Não deu certo amigo, 

    Dim sff As New StringFormatFlags()
    sff.LineAlignment = StringAlignment.Center
    sff.Alignment = StringAlignment.Center
    
    G.DrawString(c, fontetexto, Brushes.Orange, Me.ClientRectangle, sff)

    Da esse erro: 'LineAlignment' is not member of 'System.Drawing.StringFormatFlags'.

    segunda-feira, 24 de fevereiro de 2014 18:52
  • Errei,não é StringFormatFlags,e sim StringFormat.
    segunda-feira, 24 de fevereiro de 2014 19:16