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
目前,我正在利用 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