none
PrintDocument 列印文字檔不會對齊 RRS feed

  • 問題

  • Hi 

    請教一下各位,我用StreamReader讀入一個文字檔
    文字檔裡面的文字類似下方,其中文字是對齊的

    a  b  c ...
    d  e  f ...

    接著我用PrintDocument 要將其列印出來,我以MSDN的範例來列印,但列印出來的文字總是不會對齊,結果總是類似

    a b c ...
    ... d e f ...

    請問一下,如何要讓列印出來的文字能對齊 ?


    列印的程式碼如下:
    Dim linesPerPage As Single = 0
    Dim yPos As Single = 0
    Dim count As Integer = 0
    Dim leftMargin As Single = e.MarginBounds.Left
    Dim topMargin As Single = e.MarginBounds.Top
    Dim line As String = Nothing
    Dim font As New Drawing.Font("Microsoft Sans Serif", 10)

    ' Calculate the number of lines per page.
    linesPerPage = e.MarginBounds.Height / font.GetHeight(e.Graphics)

    ' Print each line of the file.
    While count < linesPerPage

    line = myStreamReader.ReadLine()
    If line Is Nothing Then
    Exit While
    End If

    yPos = topMargin + count * font.GetHeight(e.Graphics)
    e.Graphics.DrawString(line, font, Brushes.Black, leftMargin, yPos, New String
    Format(Drawing.StringFormatFlags.LineLimit))

    count += 1
    End While

    ' If more lines exist, print another page.
    If Not (line Is Nothing) Then
    e.HasMorePages = True
    Else
    e.HasMorePages = False
    End If
    2008年12月9日 上午 02:36

解答

所有回覆

  • HI,

     

    您所列的是PrintDocument的PrintPage事件處理程序內容, 您只要將負責顯示列印要視窗上的程式碼和PrintPage事件處理程序欲執行的程式碼一樣(例如呼叫同一個方法), 畫面上看到的內容, 應該就會和列印得到的內容一模一樣.

     

    tihs

    2008年12月9日 上午 03:41
  • Hi this大大

    不好意思我不太懂您說的意思,我從文字檔讀出字串去列印,列印出來的內容沒有問題,只是原本在文字檔中是對齊的,但列印時會變成沒有對齊。

    我看了一下,不知道是不是因為列印的 Column 超過頁面,所以一些文字的位置改變了,請問一下要怎麼讓列印時 Column如果超過頁面也不要換到下一行、位置也不要改變 ?

    謝謝


    2008年12月9日 上午 08:41
  • 請選等寬的字型來列印,比如說細明體。

     

    2008年12月9日 下午 03:38
  • Hi 

    感謝心大的回答,我選到的字型剛好是不等寬的,所以長度不會對齊,再次感謝。
    2008年12月10日 上午 01:56
  • HI,

     

    看看這篇有沒有幫助:

    http://msdn.microsoft.com/en-us/library/ms996492.aspx

     

    tihs

     

    2008年12月10日 上午 02:31