COMO IMPRIMIR COLORIDO COM RICHTEXTBOX?
Pessoal não estou conseguindo imprimir colorido ,eu uso o richtextbox e nele tem o colordialog para eu poder escolher a cor mais só imprime preto?
Public Class Form1
Private PrintPageSettings As New PageSettings
Private StringToPrint As String
Private PrintFont As New Font([Ô]Arial[Ô], 10)
botão imprimir
Try
[ô]Especifica as configurações da página atual
PrintDocument1.DefaultPageSettings = PrintPageSettings
[ô]Especifica o documento para a caixa de dialógo de impressão e mostra
StringToPrint = RichTextBox1.Text
PrintDialog1.Document = PrintDocument1
Dim result As DialogResult = PrintDialog1.ShowDialog
[ô]se clicar em ok,imprime documento para impressora
If result = Windows.Forms.DialogResult.OK Then
PrintDocument1.Print()
End If
Catch ex As Exception
[ô]exibe mensagem de erro
MessageBox.Show(ex.Message)
End Try
End Sub
e tem essa parte que é para imprimir o arquivo se ele for de multiplas páginas
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim numChars As Integer
Dim numLines As Integer
Dim stringForPage As String
Dim strFormat As New StringFormat
[ô]Com base na configuração de pagina,define o retângulo desenhável na página
Dim rectDraw As New RectangleF( _
e.MarginBounds.Left, e.MarginBounds.Top, _
e.MarginBounds.Width, e.MarginBounds.Height)
[ô]Define a área para determinar quanto texto cabe em uma página
[ô]Diminui a altura por uma linha para assegurar que o texto não seja cortado
Dim sizeMeasure As New SizeF(e.MarginBounds.Width, _
e.MarginBounds.Height - PrintFont.GetHeight(e.Graphics))
[ô]Ao desenhar strings longas,quebra entre palavras
strFormat.Trimming = StringTrimming.Word
[ô]calcula quantos caracteres e linhas podem caber com base em sizeMeasure
e.Graphics.MeasureString(StringToPrint, PrintFont, _
sizeMeasure, strFormat, numChars, numLines)
[ô]Calcula a string que caberá em uma página
stringForPage = StringToPrint.Substring(0, numChars)
[ô]imprime a string na página atual
e.Graphics.DrawString(stringForPage, PrintFont, _
Brushes.Black, rectDraw, strFormat)
[ô]se houver mais texto,indica que há mais páginas
If numChars < StringToPrint.Length Then
[ô]subtrai texto da string que foi impressa
StringToPrint = StringToPrint.Substring(numChars)
e.HasMorePages = True
Else
e.HasMorePages = False
[ô]todo o texto foi impresso,então restaura string
StringToPrint = RichTextBox1.Text
End If
End Sub
Public Class Form1
Private PrintPageSettings As New PageSettings
Private StringToPrint As String
Private PrintFont As New Font([Ô]Arial[Ô], 10)
botão imprimir
Try
[ô]Especifica as configurações da página atual
PrintDocument1.DefaultPageSettings = PrintPageSettings
[ô]Especifica o documento para a caixa de dialógo de impressão e mostra
StringToPrint = RichTextBox1.Text
PrintDialog1.Document = PrintDocument1
Dim result As DialogResult = PrintDialog1.ShowDialog
[ô]se clicar em ok,imprime documento para impressora
If result = Windows.Forms.DialogResult.OK Then
PrintDocument1.Print()
End If
Catch ex As Exception
[ô]exibe mensagem de erro
MessageBox.Show(ex.Message)
End Try
End Sub
e tem essa parte que é para imprimir o arquivo se ele for de multiplas páginas
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim numChars As Integer
Dim numLines As Integer
Dim stringForPage As String
Dim strFormat As New StringFormat
[ô]Com base na configuração de pagina,define o retângulo desenhável na página
Dim rectDraw As New RectangleF( _
e.MarginBounds.Left, e.MarginBounds.Top, _
e.MarginBounds.Width, e.MarginBounds.Height)
[ô]Define a área para determinar quanto texto cabe em uma página
[ô]Diminui a altura por uma linha para assegurar que o texto não seja cortado
Dim sizeMeasure As New SizeF(e.MarginBounds.Width, _
e.MarginBounds.Height - PrintFont.GetHeight(e.Graphics))
[ô]Ao desenhar strings longas,quebra entre palavras
strFormat.Trimming = StringTrimming.Word
[ô]calcula quantos caracteres e linhas podem caber com base em sizeMeasure
e.Graphics.MeasureString(StringToPrint, PrintFont, _
sizeMeasure, strFormat, numChars, numLines)
[ô]Calcula a string que caberá em uma página
stringForPage = StringToPrint.Substring(0, numChars)
[ô]imprime a string na página atual
e.Graphics.DrawString(stringForPage, PrintFont, _
Brushes.Black, rectDraw, strFormat)
[ô]se houver mais texto,indica que há mais páginas
If numChars < StringToPrint.Length Then
[ô]subtrai texto da string que foi impressa
StringToPrint = StringToPrint.Substring(numChars)
e.HasMorePages = True
Else
e.HasMorePages = False
[ô]todo o texto foi impresso,então restaura string
StringToPrint = RichTextBox1.Text
End If
End Sub
aeu não entendi muito bem seu condigo mais acredito que problema este na instacia quando vc defini a as cores abre-se uma nova instacia
mas quando vc vai imprimir abre-se outra instaciar ou seja as configurações da primeira instacia ja não se define mais para esse nova impresão
seria legal vc define as configurações de cor com propriedades
mas quando vc vai imprimir abre-se outra instaciar ou seja as configurações da primeira instacia ja não se define mais para esse nova impresão
seria legal vc define as configurações de cor com propriedades
na segunda parte do código no evento printdocument_1 é só uma rotina para poder imprimir mais de uma página, eu queria saber como eu defino no código um geito de fazer tipo printfont = richtextbox.forecolor mais desse geito não funciona =/
Tópico encerrado , respostas não são mais permitidas