【问题标题】:How to print a Image.png in VB.Net?如何在 VB.Net 中打印 Image.png?
【发布时间】:2023-03-22 08:04:01
【问题描述】:

目前我正在开发一个桌面应用程序,我需要从本地存储(桌面)打印图像(png 文件)。

很简单,当我按下按钮时,它将发送图像进行打印。看我的功能,它不起作用。 (对于校样,我在 PDF 打印机中打印了图像,但是当我打开图像的 pdf 时,PDF 为空)。 我从工具箱中添加了一个 PrintDocument1。

Imports System.Drawing
Imports System.Drawing.Printing
Imports System.Windows.Forms

Public Class Certificate

    Private streamToPrint As StreamReader
    Private ReadOnly pd As New PrintDocument()

    Private Sub PrintCertificateButton_Click(sender As Object, e As EventArgs) Handles PrintCertificateButton.Click

        Try
            streamToPrint = New StreamReader("C:\Users\m.cerna\Desktop\screenshot.png")
            Try
                pd.Print()

            Finally
                streamToPrint.Close()
            End Try
        Catch ex As Exception
            MessageBox.Show("An error has occurred trying to print" & vbCrLf & "Error code: ", ex.Message)
        End Try
    End Sub

End Class

【问题讨论】:

  • 您可能想要加载一个 Image 对象并订阅 PrintDocument.PrintPage 事件。你应该避免这样的硬编码路径。部署时该文件将不存在。
  • 怎么样?我不明白,我是这个语言的新手,对不起:(
  • 好吧,如果 How? 与加载图像有关,您可以将Private streamToPrint As StreamReader 更改为Private certificateImage as Image 并写为certificateImage = Image.FromStream(new MemoryStream(File.ReadAllBytes([Your Image Path])))。要将处理程序添加到 PrintPage 事件,请按照文档中的示例:PrintDocument.PrintPage,我知道您已经看到了,但部分实现了。在事件处理程序中,使用PrintPageEventArgs Graphics 对象绘制您的位图。

标签: vb.net png printdocument


【解决方案1】:

我解决了这个问题! 我改变了我的功能,我使用了:

AddHandler PrintDocument1.PrintPage, AddressOf Me.PrintImage

我分享我的新功能 :) 我在以下位置找到它:http://vbcity.com/forums/t/25494.aspx

Private Sub PrintCertificateButton_Click(sender As Object, e As EventArgs) Handles PrintCertificateButton.Click

    Try
        AddHandler PrintDocument1.PrintPage, AddressOf Me.PrintImage
        PrintDocument1.Print() 
    Catch ex As Exception 
        MsgBox(ex, MsgBoxStyle.Critical, "Error during Print")
    End Try
End Sub

Private Sub PrintImage(ByVal sender As Object, ByVal ppea As PrintPageEventArgs)
    ppea.Graphics.DrawImage(Image.FromFile("C:\Users\m.cerna\Desktop\screenshot.png"), ppea.Graphics.VisibleClipBounds)
    ppea.HasMorePages = False
End Sub

【讨论】:

  • 这会在您每次单击PrintCertificateButton 时创建一个新的PrintPage 处理程序。不要那样做。将此行 AddHandler PrintDocument1.PrintPage, AddressOf Me.PrintImage 移动到表单的构造函数或 Load 事件。并在表单的关闭/关闭事件中删除它:RemoveHandler PrintDocument1.PrintPage, AddressOf Me.PrintImage.
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多