FAQ TBarCode OCX
Comment créer un bitmap de code-barres optimal (code 1D) pour 812,8 DPI en VB6 ?
Comment créer un bitmap de code-barres optimal (code 1D) pour 812,8 DPI en VB6 ?
Approche 1
La première approche utilise une largeur de module prédéfinie (personnalisée), définit les DPI, puis calcule la largeur totale du symbole. Le principe fonctionne également pour d'autres imprimantes.
La méthode OCX BCWidthHdc2 peut être utilisée pour calculer la largeur du code-barres. Si une largeur de module a été définie, utilisez une valeur factice pour le paramètre [in] nWidth. Si vous calculez la largeur en unité=mm, convertissez-la ensuite en pixels pour la fonction SaveImage. Il existe une fonction similaire pour la hauteur – mais celle-ci n'est nécessaire que pour les codes-barres 2D.
Remarque : lorsque vous définissez une largeur de module de exactement 0,3125 mm ou 0,0123 pouce, vous êtes à 100 % dans la trame d'impression d'une machine à 812,8 dpi. C'est l'une des valeurs recommandées. Si vous avez activé l'indicateur d'optimisation de résolution, la largeur de module est ajustée aux limites de pixels (inférieures) suivantes dans la trame d'impression et donc « optimisée ». Les DPI doivent être définis en conséquence pour cette optimisation.
Exemple de code :Dim widthPx As Long Dim heightPx As Long Dim heightMM As Double TBarCode111.Dpi = 812.8 TBarCode111.SizeMode = eSizeMode_CustomModuleWidth TBarCode111.ModuleWidth = "312.5" heightPx = 500 heightMM = heightPx * (25.4 / TBarCode111.Dpi) widthPx = TBarCode111.BCWidthHdc2(0, 1000, heightMM * 1000, eMUPixel) TBarCode111.SaveImage "c:\temp\test2.tif", eIMTif, widthPx, heightPx, 812.8, 812.8
Approche 2
Avec la seconde approche, plus simple, la largeur de module n'est pas définie explicitement. Au lieu de cela, le facteur d'échelle transmis à la fonction GetOptimalBitmapSize (OCX API) contrôle la largeur de module. Si vous l'utilisez, ne définissez pas de largeur de module personnalisée et/ou de résolution optimale dans l'API. Cette fonction effectue une mise à l'échelle supplémentaire (basée sur les DPI), qui doit être désactivée avec DPI = 0 avant d'appeler la fonction.
Comme nous connaissons les DPI de l'imprimante, nous connaissons également la dimension du pixel (point d'imprimante). Nous savons également qu'un module doit toujours être un multiple entier d'un point d'imprimante. Il faut tenir compte du fait qu'en général, un module ne doit jamais être inférieur à 0,190 mm (mais cela dépend du type de code-barres). Il vous suffit alors de transmettre le facteur ScaleX = ModuleWidth/PixelSize (= 8, 9, 10,…) à la fonction GetOptimalBitmapSize et d'utiliser les valeurs retournées pour SaveImage.
Largeur de module : l'optimum de 0,0123 pouce correspond à 10 pixels à 812,8 dpi. Le facteur d'échelle serait donc de 10 pour la fonction GetOptimalBitmapSize.
Exemple de code :Dim width As Long Dim height As Long width = 1 height = 500 TBarCode111.Dpi = 0 'turn off additional dpi/96 scaling TBarCode111.GetOptimalBitmapSize 10, 10, width, height TBarCode111.SaveImage "c:\temp\test.tif", eIMTif, width, height, 812.8, 812.8