常见问题 TBarCode DLL / TBarCode Library
如何提升保存图像的速度?
如何提升保存图像的速度?
为加快条码的打印速度,建议采用以下方案:
BCBitmapToMemory
可以使用 BCBitmapToMemory 代替 BCSaveImageToBuffer,速度应会更快。更多信息请参见 API 参考——BCBitmapToMemoryA。
请注意,BitmapToMemory 不支持字体渲染,传递尺寸时也使用了不同的单位。如果您收到内存不足的错误代码(eErr_OutOfMemory),请增大缓冲区大小(使用返回的 *pnSize 值)并再次调用该函数。生成的位图大小也会对速度产生一定影响(但影响不大)。
绘制模式
您可以将绘制模式更改为“compatible(兼容)”,这应能显著提升性能。更多信息请参见 API 参考—— BCSetDrawModeExt。
不过,“compatible”绘制模式有时会产生放大的条/点(或相反效果),偏差为 1 像素。此绘制模式使用 GDI 的 Rectangle 函数——条能否正确绘制取决于显卡/视频驱动程序以及打印机驱动程序。在约 90-95% 的使用场景中,分辨率并不重要(在 1200 dpi 打印机上,1 像素的偏差可以忽略不计),但对于低分辨率位图,1 像素的偏差已经相当可观。因此测试非常重要。
请在调用 BCDraw 或 BCSaveImage 之前进行此设置:
BCSetDrawModeExt (pBarCode, eDrawMode_Compatible);
该绘制模式在 .NET 库中同样可用(GDIDrawMode)。
多线程
对于多线程场景,您还应考虑以下提示: