我正在使用KeepAutomation构建一个带Code 128条码的Label打印机。
在程序中我实际上:
使用KeepAutomation Referenced模块将数据编码到条形码
Private Sub MakeImage()
Dim barcode As KeepAutomation.Barcode.Bean.BarCode = New KeepAutomation.Barcode.Bean.BarCode
barcode.Symbology = KeepAutomation.Barcode.Symbology.Code128Auto
barcode.CodeToEncode = Me.txtCatNum.Text
barcode.X = 2
barcode.Y = 100
barcode.BottomMargin = 0
barcode.LeftMargin = 0
barcode.RightMargin = 0
barcode.TopMargin = 0
barcode.DisplayText = True
barcode.ChecksumEnabled = True
barcode.DisplayChecksum = True
barcode.Orientation = KeepAutomation.Barcode.Orientation.Degree0
barcode.BarcodeUnit = KeepAutomation.Barcode.BarcodeUnit.Pixel
barcode.DPI = 72
barcode.TextFont = New Font("Arial", 26.0F, FontStyle.Regular)
barcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg
barcode.generateBarcodeToImageFile(FileToUse)
从编码数据创建Jpeg图像(使用静态名称到硬盘驱动器上的特定位置)
将图像放入PrintDocument
打印
但是当我在再次运行该程序之前尝试删除该文件时,它告诉我它无法删除该文件,因为它被应用程序本身(如果已发布)或vshost32-clr2.exe(在调试时)使用。
我试过了:
处理PrintDocument类
处理,关闭和重新开始表单。
以上都没有帮助过我。
寻找一个好主意(除了为我创建的每个标签创建不同的图像)
谢谢, 盖
答案 0 :(得分:0)
谢谢朋友们,
我从pinkfloydx33
中找到了我的问题的完美答案我为我正在创建的jpeg创建了一个FileStream,将其打开为“只读”,一旦完成将它放在PrintDocument类上,我就可以很容易地覆盖/删除它。
这是我使用的代码.....
MakeImage()
Dim fs As New FileStream(FileToUse, FileMode.Open, FileAccess.Read)
e.Graphics.DrawImage(Image.FromStream(fs), 20, 5, 150, 80)
e.Graphics.DrawString("Batch: ___________", BatchFont, Brushes.Black, 0, 97)
fs.Dispose()
结论,如果我可以.....
无论何时打开文件,特别是当您不需要修改文件时,请将其作为FS访问并打开为ReadOnly .....
再次感谢。