Voy a ver si me explico, con el siguiente código lo que hago es poner un código de barras en una ventana, lo capturo y luego creo un JPG. Pero la calidad de la imagen no es la correcta para imprimirla y que los lectores de códigos la identifiquen correctamente.
- Code: Select all Expand view RUN
- function CodigoBarras (zCodFin,zCodCon)
va150 = "{" + zCodFin + zCodCon + chr(126)
// Creo la ventana oDlgwBro
CreaBrow( 72,600)
DEFINE FONT oFona NAME "Code 128AB" SIZE 15, 72
@ 2,20 SAY va150 OF oDlgwBro PIXEL COLOR RGB( 0, 0, 0), RGB (255,255,255) FONT oFona SIZE 600,72
SysRefresh()
#define SRCCOPY 13369376
hDC := oDlgwBro:GetDC()
hDCMem = CreateCompatibleDC( hDC )
hBmpMem := CreateCompatibleBitmap( hDC, 600, 72 )
hOldBmp := SelectObject( hDCMem, hBmpMem )
BitBlt( hDCMem, 0, 0, 600, 72, hDC, 0, 0, SRCCOPY )
hDib := DibFromBitmap( hBmpMem )
cTempFile := cTempFile()
DibWrite( cTempFile, hDib )
GloBalFree( hDib )
lSaved = FISaveImg( cTempFile, "Text.jpg", 2, 25 )
FErase( cTempFile )
SelectObject( hDCMem, hOldBmp )
DeleteDC( hDCMem )
oDlgwBro:ReleaseDC()
DeleteObject( hBmpMem)
oDlgwBro:Hide()
oDlgwBro:Destroy()
RETURN (zCodfin)
static function FISAVEIMG( cSrcFile, cDstFile, nDstFormat, nQuality )
local nSrcFormat, hDib, hDib2, lOk := .f.
DEFAULT nQuality := 0
if LoadFreeImage() > 32
nSrcFormat = FIGETFILETYPE( cSrcFile, 0 )
hDib = FILOAD( nSrcFormat, cSrcFile, 0 )
hDib2 = FICNV24( hDib )
lOk = FISAVE( nDstFormat, hDib2, cDstFile, nQuality )
FIUNLOAD( hDib )
FIUNLOAD( hDib2 )
endif
return lOk
Mi pregunta es la siguiente:
Lo primero que hago es crear una ventana y en ella escribir con un SAY en ella el código de barras, después lo capturo y lo pongo en un objeto para crear un archivo JPG y cerrar todo. Yo podría escribir directamente el código de barras en un objeto, para no tener que capturarlo de pantalla, y después con ese objeto crear el JPG.
Por favor ayuda, gracias
Carlos