FAQ TBarCode OCX
Come Posso Creare una Bitmap Codice a Barre Ottimale (Codice 1D) per 812,8 DPI in VB6?
Come Posso Creare una Bitmap Codice a Barre Ottimale (Codice 1D) per 812,8 DPI in VB6?
Approccio 1
Il primo approccio utilizza una larghezza modulo preimpostata (personalizzata), imposta i DPI e quindi calcola la larghezza totale del simbolo. Il principio funziona anche per altre stampanti.
Il metodo OCX BCWidthHdc2 può essere utilizzato per calcolare la larghezza del codice a barre. Se è stata impostata una larghezza modulo, utilizzate un valore fittizio per il parametro [in] nWidth. Se calcolate la larghezza in unità=mm, convertitela successivamente in pixel per la funzione SaveImage. Esiste una funzione simile per l’altezza – ma il calcolo dell’altezza è necessario solo per i codici a barre 2D.
Nota: quando impostate una larghezza modulo di esattamente 0,3125 mm o 0,0123 pollici siete al 100% nella griglia di stampa di una macchina a 812,8 dpi. Questo è uno dei valori consigliati. Se avete attivato il flag di risoluzione ottimale, la larghezza modulo viene modificata al successivo limite di pixel (inferiore) nella griglia di stampa e quindi "ottimizzata". I DPI devono essere impostati di conseguenza per questa ottimizzazione.
Codice di Esempio: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
Approccio 2
Con il secondo approccio, più semplice, la larghezza modulo non viene impostata esplicitamente. Al contrario, il fattore di scala passato alla funzione GetOptimalBitmapSize (API OCX) controlla la larghezza modulo. Se lo utilizzate, non impostate una larghezza modulo personalizzata e/o una risoluzione ottimale nell’API. Questa funzione esegue un ulteriore ridimensionamento (basato sui DPI), che dovrebbe essere disattivato con DPI = 0 prima di richiamare la funzione.
Poiché conosciamo i DPI della stampante, conosciamo anche la dimensione del pixel (punto stampante). Sappiamo inoltre che un modulo dovrebbe essere sempre un multiplo intero di un punto stampante. Dobbiamo considerare che tipicamente un modulo non dovrebbe mai essere più piccolo di 0,190 mm (ma dipende dal tipo di codice a barre). A quel punto tutto ciò che dovete fare è passare il fattore ScaleX = ModuleWidth/PixelSize (= 8, 9, 10,…) alla funzione GetOptimalBitmapSize e utilizzare i valori restituiti per SaveImage.
Larghezza modulo: l’ottimo di 0,0123 pollici corrisponde a 10 pixel a 812,8 dpi. Il fattore di scala sarebbe quindi 10 per la funzione GetOptimalBitmapSize.
Codice di Esempio: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