Imprimir en fondo negro y letra blanca

Post Reply
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Imprimir en fondo negro y letra blanca

Post by Verhoven »

En una impresora:
¿Cómo se puede hacer para imprimir la letra en blanco y el bondo en negro?. Es decir, hacer como si fuera el negativo.
Para imprimir normálmente nos deja elegir si queremos, Negrilla (bold), itálica, subrayado, tachado, pero no veo como elegir/cambiar el color de la letra y su fondo.
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Imprimir en fondo negro y letra blanca

Post by Armando »

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Imprimir en fondo negro y letra blanca

Post by Antonio Linares »

La clase TPrinter proporciona este método:

METHOD SayText( nRow, nCol, cText, nWidth, nHeight, oFont, cAlign, nClrText, nClrBack )

En donde puedes especificar el color del texto nClrText y el color del fondo nClrBack
regards, saludos

Antonio Linares
www.fivetechsoft.com
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Post by Verhoven »

Gracias Antonio.
Pero dos duda más:
Como ahora estamos usando el método cmsay,

1.- ¿nRow y nCol están en cm?.

2.- ¿A qué se refieren nWith y nHight? si el tamaño ya va dado en el oFont según el tipo de letra.

3.- ¿Qué valores se puede dar a cAlign?
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Imprimir en fondo negro y letra blanca

Post by nageswaragunupudi »

METHOD SayText( nRow, nCol, cText, [nWidth], [nHeight], [oFont], [cAlign], [nClrText], [nClrBack], [cUnits] )

10th parameter is cUnits. Possible values are "INCHES","CM","MM","PIXEL". Case not sensitive. Default Pixels

cAlign:
"T" : Top
"B" : Bottom
"L" : Left
"R" : Right
Can be combined "TL", "TR", "BL", "BR"
Default is "TL" --> Top Left

We advise using the command instead of calling method directly:

Code: Select all

#xcommand @ <nRow>, <nCol> PRINT TO <prn> TEXT <cText> ;
      [SIZE <nWidth> [,<nHeight>] ] ;
      [<unit: PIXEL,MM,CM,INCHES>] ;
      [FONT <fnt>] ;
      [ALIGN <aln>] ;
      [COLOR <nTxt> [,<nBck> ] ] ;
      [LASTROW <lrow>] ;
   => ;
      [<lrow> := ] <prn>:SayText( <nRow>, <nCol>, <cText>, [<nWidth>], [<nHeight>], ;
            [<fnt>], [<aln>], [<nTxt>], [<nBck>], [<(unit)>] )


#xcommand @ <nRow>, <nCol> PRINT TO <prn> IMAGE <img> ;
      [SIZE <nWidth> [,<nHeight>] ] ;
      [<unit: PIXEL,MM,CM,INCHES>] ;
      [<lStr: STRETCH>] ;
      [ ALPHALEVEL <nAlpha>] ;
      [<lNoTrn: NOTRANSPARENT>] ;
      [<lGray: GRAY> ] ;
      [LASTROW <lrow>] ;
   => ;
      [<lrow> := ] <prn>:PrintImage( <nRow>, <nCol>, <img>, [<nWidth>], [<nHeight>], ;
            [<.lStr.>], [<nAlpha>], [!<.lNoTrn.>], [<.lGray.>], [<(unit)>] )

 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Imprimir en fondo negro y letra blanca

Post by nageswaragunupudi »

Sample Usage:

Code: Select all

#include "fivewin.ch"

function Main()

   local oPrn
   local nRow, oFont1
   local oBrush, oBlack

   DEFINE BRUSH oBrush FILE "c:\fwh\bitmaps\backgrnd\geige.bmp"
   DEFINE BRUSH oBlack COLOR CLR_BLACK

   PRINT oPrn PREVIEW

   DEFINE FONT oFont1 NAME "Arial" SIZE 0,-30 BOLD OF oPrn

   PAGE
      @ 1,1 PRINT TO oPrn TEXT "WHITE ON BLACK" + CRLF + "TEXT" + CRLF + "TWO LINES" ;
         SIZE 6,2 INCHES FONT oFont1 COLOR CLR_WHITE, CLR_BLACK ALIGN "TR" ;
         LASTROW nRow

      @ 3.5,1 PRINT TO oPrn TEXT "WHITE ON BRUSH" + CRLF + "TEXT" + CRLF + "TWO LINES" ;
         SIZE 6,2 INCHES FONT oFont1 COLOR CLR_WHITE, oBlack ALIGN "BL" ;
         LASTROW nRow

      @ 6.0,1 PRINT TO oPrn TEXT "WHITE ON BRUSH" + CRLF + "TEXT" + CRLF + "TWO LINES" ;
         SIZE 6,2 INCHES FONT oFont1 COLOR CLR_WHITE, oBrush ALIGN "C" ;
         LASTROW nRow

   ENDPAGE
   ENDPRINT

   RELEASE FONT oFont1
   RELEASE BRUSH oBrush, oBlack

return nil
 
Image
Regards

G. N. Rao.
Hyderabad, India
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Post by Verhoven »

Thanks a lot Nageswaragunupudi.
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Post by Verhoven »

Utilizo la versión de FW 15.01 y no admite ese saytext.
Debe de corresponder a una versión posterior.
No me ha sido posible utilizar el código de Nageswaragunupudi .
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Imprimir en fondo negro y letra blanca

Post by nageswaragunupudi »

From Version FWH 16.04
Regards

G. N. Rao.
Hyderabad, India
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Imprimir en fondo negro y letra blanca

Post by karinha »

Very good mister Nages. Many thanks.

http://i.imgur.com/QSJAkJC.png

Image

Regards, saludos.
João Santos - São Paulo - Brasil
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Post by Verhoven »

Lo estoy intentando con los comandos siguientes, pero cuando lo hago con texto en blanco y fondo en negro no funciona:

Code: Select all

   //Configura los colores a texto en negro y fondo en blanco
    SetTextColor( oPrn:hDCOut, nrgb(0,0,0) )  //nrgb(0,0,0)=negro; nrgb(255,255,255)=Blanco
    SetBkColor( oPrn:hDCOut, nrgb(255,255,255) )
   oPrn:CmSay(nl, mrgiz, transform(11111.85,'99,999.99 €'), oFont2)
    nl=nl+4*nsl
   
   //Invierte los colores de texto y fondo 
    SetTextColor( oPrn:hDCOut, nrgb(255,255,255) )  //Texto Blanco
    SetBkColor( oPrn:hDCOut, nrgb(0,0,0) )          //Fondo Negro
   oPrn:CmSay(nl, mrgiz, transform(22222.85,'99,999.99 €'), oFont2)
    
    //Devuelve los colores a la configuración normal.
    SetTextColor( oPrn:hDCOut, nrgb(0,0,0) )        //Texto Negro
    SetBkColor( oPrn:hDCOut, nrgb(255,255,255) )    //Fondo Blanco
User avatar
karinha
Posts: 4882
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Imprimir en fondo negro y letra blanca

Post by karinha »

Cual tu versión del fivewin? Mira aqui se ayuda:

http://fivewin.com.br/index.php?/topic/ ... ent-278047

Saludos.
João Santos - São Paulo - Brasil
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Imprimir en fondo negro y letra blanca

Post by nageswaragunupudi »

Code: Select all

   SetBkColor( oPrn:hDCOut, CLR_BLACK )
   oPrn:CmSay( 10, 4, "Some tex to print", oFont, 10, CLR_WHITE, 2 )
 
Regards

G. N. Rao.
Hyderabad, India
Verhoven
Posts: 435
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Post by Verhoven »

Por algún motivo que desconozco con solo el código de Nageswaranugupudi no me ha funcionado.
Sin embargo, con la idea obtenida de la recomendación de Kaninha he logrado construir una función para hacerlo.
Os dejo el código que incluye una con función con un ejemplo.

Gracias.

Code: Select all

/** Funcion para probar la impresora de Tikets.
    Tiene que instalarse el Driver para la impresora.
    Selecionar como predeterminada.
    Si está conectada al LPT1 tiene que ser la única conectada al mismo.
     Funciona igual que con cualquier impresora Windows.
 **/
function pruebaprn_win(lprever,oPadre)
  local nl:=0           // numero de linea que se está  imprimiendo.
  local pg:=1                 // numero de página que se está  imprimiendo.
  local Ultpg:=1              // numero de páginas a imprimir.
  local texto:=Space(62)      // texto de la línea a imprimir.

  local oPrN
  local oFont1, oFont2, oFontCond, oFontCodBarras, oFontCodBarras2D, oFontBarrasQR
  local fontsize := -8
  local font2size:=-20
  local nColStep :=0
  local nsl := 4 * (-1)*(-6) / 100  // Alto en cm para el salto de linea. ¡EMPIRICO¡

  local mrgiz:=0, mrgsu:=0  // En centímetros.

  local oPen1, oPen2
  local aPosImg:={}, aTamImg:={}, cFileImg:=''
  
  default lPrever:=.T.
  
   if lPrever = .f.
     PRINT oPrn NAME "Prueba_PRN_"+dtos(date()) TO cNomImpresora
    else
     SeleccionaPrn()
     PRINT oPrn NAME "Prueba_PRN_"+dtos(date()) TO cNomImpresora PREVIEW
   endif  
     
    DEFINE FONT oFont1 NAME "ARIAL" SIZE 0, fontsize OF oPrn
    DEFINE FONT oFont2 NAME "ARIAL" SIZE 0, font2size BOLD OF oPrn
    DEFINE FONT oFontCond NAME "consolas" SIZE 0, 8 OF oPrn
    
    // 29/03/2017: LOS SIGUIENTES TIPOS PROBADOS OK CON LAS FUENTES QUE TRAE LA IMPRESORA DE TIKETS BIXOLON SRP-330II
    DEFINE FONT oFontCodBarras NAME "Barcode3" OF oPrn
    DEFINE FONT oFontCodBarras2D NAME "2D-CODE1" SIZE 0,-10 OF oPrn
    DEFINE FONT oFontCodBarrasQR NAME "QR Code" SIZE 0,-10 OF oPrn
    
    DEFINE PEN oPen1 width 1
    DEFINE PEN oPen2 width 2
    
    if empty( oPrn:hDC )
      msgstop( "No hay impresora preparada" )
      return NIL
    endif
    
 // Comienza el proceso de impresión.
 PAGE
   nl=mrgsu
  
   nl=nl+1*nsl
    
   oPrn:CmSay(nl        ,mrgiz    ,'Referencia: 12345'   ,oFontCond)
   
   CmLinea(oPrn,nl+2*nsl,mrgiz,nl+2*nsl,8,oPen1) // Línea a lo largo de la página.  
 
   nl=nl+1*nsl
   
   oPrn:CmSay(nl+2*nsl,mrgiz+0.1,'ARTICULO DE PRUEBA Ñ',oFont1)
   
   nl=nl+3*nsl
   
   oPrn:CmSay(nl, mrgiz, 'ARTICULO DE PRUEBA Ñ', oFont2,8,,, 2)
   
   nl=nl+4*nsl
   
   //Configura los colores a texto en negro y fondo en blanco
   SetTextColor( oPrn:hDCOut, nrgb(0,0,0) )  //nrgb(0,0,0)=negro; nrgb(255,255,255)=Blanco
   SetBkColor( oPrn:hDCOut, nrgb(255,255,255) )
   oPrn:CmSay(nl, mrgiz, transform(11111.85,'99,999.99 €'), oFont2)

   nl=nl+4*nsl
   
   //Cambia los colores de texto y fondo    
   PrnCmSaycolor(oPrn,nl,mrgiz,transform(22222.85,' 99,999.99 € Izda'),oFont2,nrgb(255,255,255),nrgb(255,0,0),,,)
   PrnCmSaycolor(oPrn,nl+4*nsl,mrgiz,transform(33333.85,'99,999.99 € Dcha '),oFont2,nrgb(255,0,255),nrgb(0,255,0),1,8,1)
   PrnCmSaycolor(oPrn,nl+8*nsl,mrgiz,alltrim(transform(44444.85,'99,999.99 € Center')),oFont2,nrgb(255,255,0),nrgb(0,0,255),1,,2)
   PrnCmSaycolor(oPrn,nl+12*nsl,mrgiz,alltrim(transform(44444.85,'99,999.99 € Center')),oFont2,nrgb(255,255,0),nrgb(0,0,255),1,8,2)                                                                   
   
   nl=nl+16*nsl 
    
   CmLinea(oPrn,nl,mrgiz,nl,5.5,oPen2) // Línea a lo largo de la factura.
    
   nl=nl+1*nsl
 
   oPrn:CmSay(nl,0,'1234567890123456789012345678901234567890',oFontCond)
   
   nl=nl+2*nsl
 
   oPrn:CmSay(nl,0,'8000113009510',oFontCond)

   nl=nl+2*nsl
 
   oPrn:CmSay(nl,0,'8000113009510',oFontCodBarras)
   
   nl=nl+2*nsl
 
   oPrn:CmSay(nl,0,'8000113009510',oFontCodBarras2D)

   nl=nl+2*nsl
 
   oPrn:CmSay(nl,0,'8000113009510',oFontCodBarrasQR)
      
 ENDPAGE
 ENDPRINT // Apaga la impresora

 oPen1:end()
 oPen2:end()
return NIL

//Pinta en la impresora una línea en color
function PrnCmSaycolor(oPrn,nRowcm,nColcm,cText,oFont,nColorLetra,nColorFondo, nBkMode,nCmAncho,nAlineamiento)
 local nOldColorLetra:= 0 //Texto Blanco
 local nOldBkColor   := 0 //Texto Fondo
 local nOldBkMode    := 0 //Back Mode; 1 transparente, 2 opaco.
 local ammPageSize  := oPrn:GetPhySize()
 
 local oBrush, aDesde:={}, aHasta:={}
  
 default nColorLetra:=nrgb(0,0,0)
 default nColorFondo:=nrgb(255,255,255)
 default nBkMode := 1 // 1= transparente, 2= opaco
 
 default nCmAncho:= ammPageSize[1]/10 //Por defecto todo el ancho de la página
 default nAlineamiento:=0 //LEFT 0, RIGHT 1,CENTER 2

 DEFINE BRUSH oBrush COLOR nColorFondo

 nOldColorLetra:=SetTextColor( oPrn:hDCOut, nColorLetra )  //Texto Blanco
 nOldBkColor   :=SetBkColor( oPrn:hDCOut, nColorFondo ) 
 nBkMode       :=SetBkMode( oPrn:hDCOut, nBkMode )
 
 aDesde:=oPrn:cmtr2pix(nRowcm,nColcm)
 aHasta:=oPrn:cmtr2pix(nRowcm,nColcm+nCmAncho); aHasta[1]=aHasta[1]+oPrn:GetTextHeight( "", oFont )+5
    
 oPrn:FillRect( {aDesde[1],aDesde[2],aHasta[1],aHasta[2]}, oBrush )
 
 do CASE
    CASE nAlineamiento = 0  // Izquierda
          nColcm=nColcm
    CASE nAlineamiento = 1  // Derecha
          nColcm=nCmAncho-oPrn:CmtrGetTextWidth( cText, oFont )
    CASE nAlineamiento = 2  // Centrado
          nColcm=nColcm+(nCmAncho-oPrn:CmtrGetTextWidth( cText, oFont ))/2
 endcase

 oPrn:CmSay(nRowcm,nColcm, cText, oFont,nCmAncho,nColorLetra,nBkMode,0)
    
 //Devuelve los colores a la configuración anterior a pintar.
 SetTextColor( oPrn:hDCOut, nOldColorLetra )       
 SetBkColor( oPrn:hDCOut, nOldBkColor )
 SetBkMode( oPrn:hDCOut, nOldBkMode )
 
 oBrush:end()
return
 
Post Reply