Imprimir en fondo negro y letra blanca

Imprimir en fondo negro y letra blanca

Postby Verhoven » Sun Mar 26, 2017 2:27 pm

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.
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Postby Armando » Sun Mar 26, 2017 11:58 pm

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
Armando
 
Posts: 3201
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Imprimir en fondo negro y letra blanca

Postby Antonio Linares » Mon Mar 27, 2017 6:19 am

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
User avatar
Antonio Linares
Site Admin
 
Posts: 42065
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Imprimir en fondo negro y letra blanca

Postby Verhoven » Mon Mar 27, 2017 8:49 am

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?
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Postby nageswaragunupudi » Tue Mar 28, 2017 12:06 am

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  Expand view
#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: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Imprimir en fondo negro y letra blanca

Postby nageswaragunupudi » Tue Mar 28, 2017 12:43 am

Sample Usage:
Code: Select all  Expand view

#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
User avatar
nageswaragunupudi
 
Posts: 10620
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Imprimir en fondo negro y letra blanca

Postby Verhoven » Tue Mar 28, 2017 12:51 pm

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

Re: Imprimir en fondo negro y letra blanca

Postby Verhoven » Tue Mar 28, 2017 1:14 pm

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 .
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Postby nageswaragunupudi » Tue Mar 28, 2017 1:29 pm

From Version FWH 16.04
Regards

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

Re: Imprimir en fondo negro y letra blanca

Postby karinha » Tue Mar 28, 2017 2:11 pm

Very good mister Nages. Many thanks.

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

Image

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Imprimir en fondo negro y letra blanca

Postby Verhoven » Thu Mar 30, 2017 8:19 am

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

Code: Select all  Expand view
  //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
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm

Re: Imprimir en fondo negro y letra blanca

Postby karinha » Thu Mar 30, 2017 1:18 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7794
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Imprimir en fondo negro y letra blanca

Postby nageswaragunupudi » Sat Apr 01, 2017 3:29 pm

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

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

Re: Imprimir en fondo negro y letra blanca

Postby Verhoven » Mon Apr 03, 2017 7:05 pm

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  Expand view
/** 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
 
Verhoven
 
Posts: 520
Joined: Sun Oct 09, 2005 7:23 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 40 guests