Página 1 de 1

Paleta de colores

Enviado: 27 Mai 2020 15:27
por Adalberto
Maestros y amigos, buenas tardes

Deseo saber como se puede ejecutar una paleta de colores, más o menos como la de paint, con Harbour-modo consola,

Aguardo y agradezco vuestra ayuda.

Atte. Adalberto

Paleta de colores

Enviado: 27 Mai 2020 21:21
por lwinter
Ola Adalberto!
Eu desenvolvi uma classe para tratar paletas, temas e shemas de cores em console. Sei que voce nao vai utilizar a classe mas ela possui metodos que podem tirar a sua duvida. Ela é bem completa e abrangente.

segue em anexo:

Paleta de colores

Enviado: 27 Mai 2020 23:36
por Adalberto
lwinter, buenas noches.

Agradecido por tu respuesta y deseo de ayudar, es cierto que no utilizaré las Clases porque no se como se utilizan, las voy a estudiar para aprovechar tu ayuda lo mejor que pueda.

Mi deseo es generar una ventana donde aparezcan los colores y conseguir el valor decimal del color señalado. (algo parecido al que muestra Paint).

Actualmente puedo cambiar los colores originales de clipper por otros de mi preferencia, pero me agradaría poder elegir un color y aplicarlo en tiempo de ejecución.

Espero vuestras noticias.

Muchas gracias.

Un abrazo desde Santa Cruz de la Sierra - Bolivia

Paleta de colores

Enviado: 31 Mai 2020 14:44
por lwinter
Exemplo de usar a classe TPalette. Eu pessoalmente uso direto a TColorSchema.

corApp := TPalette ():New ()
corApp:SetPalette ( { ;
/* 0*/ 'gray 1' => '#3C3C3C', ;
/* 1*/ 'black 0' => '#232323', ;
/* 2*/ 'gray 0' => '#323948', ;
/* 3*/ 'verde 0' => '#257C5C', ;
/* 4*/ 'vermelho' => '#D0020E', ;
/* 5*/ 'rosa' => '#CD4B53', ;
/* 6*/ 'gray 3' => 'VSCODE 3', ; // voce pode optar em usar um tema do colection da classe Tpalete ou diretamente um codigo rgb #
/* 7*/ 'white 0' => 'SILVER', ;
/* 8*/ 'gray 4' => 'VSCODE 4', ;
/* 9*/ 'azul 0' => 'AZUL DARK', ;
/*10*/ 'verde 1' => 'EMERALD', ;
/*11*/ 'gray 2' => 'MOVAVI BOTAO SEL', ;
/*12*/ 'black 1' => 'VSCODE BLACK', ;
/*13*/ 'black 2' => 'MOVAVI PAINEL BOT', ;
/*14*/ 'white 1' => 'CLOUDS', ;
/*15*/ 'white 15' => 'WHITE'
} )

Note que no Harbour por heranca do clipper voce so pode usar 16 cores do RGB por vez. Caso voce altere a paleta de um determinado indice, toda a tela que se referenciar aquela cor ira mudar automaticamente.

o metodo xRGB_To_nRGB (xPalette) calcula o valor no formato utilizado por registrador do hb_gtInfo (HB_GTI_PALETTE, {}) de varias formas.
Exemplos:
corApp: xRGB_To_nRGB ('#345D1F')
ou
corApp: xRGB_To_nRGB ({ 122, 250, 12 })
ou
corApp: xRGB_To_nRGB (850554)

Paleta de colores

Enviado: 31 Mai 2020 19:53
por Adalberto
IWinter, buenas noches

Muy agradecido con tu ayuda.

Con vectores tengo resuelto el tema del cambio de color en la aplicación.

Mi deseo es poder presentar una ventana con todos los colores y cuando el usuario de clik en uno de los colores esa ventana me devuelva los valores decimales de ese color, ej. 32, 32, 32
luego yo utilizaría esos valores para cambiar el color de la aplicación.

De esa manera la aplicación tendría el color que le agrada al usuario.

De nuevo te agradezco tu buena voluntad y ayuda.

Abrazos, Adalberto

Paleta de colores

Enviado: 31 Mai 2020 21:14
por JoséQuintas

Código: Selecionar todos

#include "hbgtinfo.ch"
#include "inkey.ch"

PROCEDURE pSetupColor

   LOCAL cCorAnt, cCor, nCont, nCont2, nOpc, aPalette, wTela, nColor, nRGB

   aPalette := hb_gtInfo( HB_GTI_PALETTE )
   cCorAnt  := SetColor()
   SAVE SCREEN TO wTela
   DO WHILE .T.
      RESTORE SCREEN FROM wTela
      @ 1, 0 SAY ""
      FOR nCont = 0 TO 15
         @ Row()+2, 0 SAY ""
         nColor := aPalette[ nCont + 1 ]
         nRgb := { 0, 0, 0, nColor }
         nRgb[ 1 ] := Mod( nColor, 256 )
         nRgb[ 2 ] := Mod( Int( nColor / 256 ), 256 )
         nRgb[ 3 ] := Int( nColor / 256 / 256 )

         @ Row(), 0 PROMPT Pad( Str( nCont, 2 ) + " : " + Str( nRgb[ 1 ], 3 ) + "." + Str( nRgb[ 2 ], 3 ) + "." + Str( nRgb[ 3 ], 3 ), 20 ) 
         FOR nCont2 = 0 TO 15
            cCor := LTrim( Str( nCont2 ) ) + "/" + LTrim( Str( nCont ) )
            @ Row(), 21 + nCont2 * 6 SAY Pad( cCor, 6 ) COLOR cCor
         NEXT
      NEXT
      MENU TO nOpc
      IF nOpc == 0 .OR. LastKey() == K_ESC
         EXIT
      ENDIF
      nColor := wvt_ChooseColor( aPalette[ nOpc ] )
      IF nColor >= 0
         aPalette[ nOpc ] := nColor
      ENDIF
      hb_gtInfo( HB_GTI_PALETTE, aPalette )
   ENDDO
   SetColor( cCorAnt )
   MsgExclamation( "Ok" )

   RETURN
color.png

Paleta de colores

Enviado: 01 Jun 2020 18:12
por Abel
seria interessante se pudessemos definir mais cores ,
pois o limite de 16 cores complica bastante.

sera que nao tem uma forma ?
Abel

Paleta de colores

Enviado: 01 Jun 2020 18:21
por Adalberto
JoséQuintas, buenas tardes.

Ese código que usted ha compartido es exacto lo que estaba buscando, muy buen trabajo y mejor voluntad para compartirlo.

Muchísimas gracias maestro JoséQuntas.

Un atento saludo.

Adalberto