FAQ TBarCode OCX
¿Cómo Puedo Crear un Mapa de Bits de Código de Barras Óptimo (Código 1D) para 812,8 DPI en VB6?
¿Cómo Puedo Crear un Mapa de Bits de Código de Barras Óptimo (Código 1D) para 812,8 DPI en VB6?
Enfoque 1
El primer enfoque usa un ancho de módulo preestablecido (personalizado), establece los ppp y luego calcula el ancho total del símbolo. El principio funciona también para otras impresoras.
El método OCX BCWidthHdc2 se puede usar para calcular el ancho del código de barras. Si se ha establecido un ancho de módulo, use un valor ficticio para el [in] nWidth. Si calcula el ancho en unidad=mm, conviértalo a píxeles después para la función SaveImage. Existe una función similar para la altura, pero la altura solo necesita calcularse para códigos de barras 2D.
Nota: al establecer un ancho de módulo de exactamente 0,3125 mm o 0,0123 pulgadas, se encuentra al 100% dentro de la trama de impresión de una máquina de 812,8 ppp. Este es uno de los valores recomendados. Si ha activado la marca de resolución óptima, el ancho de módulo se cambia al siguiente límite de píxel (inferior) en la trama de impresión y por lo tanto se "optimiza". Los ppp deben establecerse en consecuencia para esta optimización.
Código de Ejemplo: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
Enfoque 2
Con el segundo enfoque, más simple, el ancho de módulo no se establece explícitamente. En su lugar, el factor de escala pasado a la función GetOptimalBitmapSize (API OCX) controla el ancho de módulo. Si lo usa, no establezca un ancho de módulo personalizado y/o resolución óptima en la API. Esta función realiza un escalado adicional (basado en los ppp), que debería desactivarse con DPI = 0 antes de llamar a la función.
Como conocemos los ppp de la impresora, también conocemos la dimensión del píxel (punto de impresora). También sabemos que un módulo siempre debería ser un múltiplo entero de un punto de impresora. Debemos tener en cuenta que normalmente un módulo no debería ser menor de 0,190 mm en absoluto (pero depende del tipo de código de barras). Entonces todo lo que necesita hacer es pasar el factor ScaleX = ModuleWidth/PixelSize (= 8, 9, 10,…) a la función GetOptimalBitmapSize y usar los valores devueltos para SaveImage.
Ancho de módulo: el óptimo de 0,0123 pulgadas son 10 píxeles a 812,8 ppp. Por lo tanto, el factor de escala sería 10 para la función GetOptimalBitmapSize.
Código de Ejemplo: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