ActiveReports 不允许在报告生成后覆盖 jpg。 Windows。 VB.NET

ActiveReports not allowing overwrite of jpg after report generation. Windows. VB.NET

目前,我正在利用 ActiveReports 通过路径名将动态图像实现到正在生成的报告中。

正在将图像自动生成为 .jpg 到服务器文件夹。 Active Reports 模块使用此代码导入文件。

Sub ActiveReport_ReportStart

    Picture1.Image = System.Drawing.Image.FromFile("path\filename.jpg")

End Sub

我 运行 遇到的问题是此报告阻止了 jpg 文件被覆盖。

我不确定可能出了什么问题,但似乎报告生成后仍在使用图像文件。

我是否遗漏了 "disconnect" 代码片段以确保导入不允许继续联系文件?

如果这很简单,我深表歉意,但我找不到与此特定实例相关的任何信息。

谢谢。

编辑:

我试图通过将它们复制到它们自己的变量中来绕过锁定。但这也没有用。

Sub ActiveReport_ReportStart

dim TempImage as Image = Image.FromFile("path\filename")
Picture1.Image = TempImage
End Sub

您可以使用 "Using" 块来确保图像对象在其使用完成后立即被释放。

Using 语句基本上为语句中指定的对象标记了一个边界。因此,当使用 Using – End Using 的代码块在正常执行或某些异常原因退出后,框架会自动调用这些对象的 Dispose 方法。

这是可以帮助您解决问题的建议代码:

Private Sub SectionReport1_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart
    Dim img As Image

    Using bmpTemp = New Bitmap("path\filename.jpg")
        img = New Bitmap(bmpTemp)
    End Using

    Picture1.Image = img
End Sub

我能够通过创建一个使用 Graphics.FromImage 方法并处理原始文件的函数来实现它。

Public Function GetImageFile(ByVal pathfn As String) As Image
    Dim tempImg As Image = Image.FromFile(pathfn)
    Dim tempBtm As New Bitmap(Width:=img.Width*CorrectFactor, Height:=img.Height*CorrectFactor, Format:=tempImg.PixelFormat)
        Using g As Graphics = Graphics.FromImage(bm)
            g.DrawImage(tempImg, Point.Empty)
        End Using
    tempImg.Dispose()
    Return tempBtm  
End Function

将放置在报告中的项目如下。

Sub ActiveReport_ReportStart
    Picture1.Image = GetImageFile("Path\Filename")
End Sub