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

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