Página 1 de 2

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 10:49
por EduardoSPno
Fala amigos, tudo bem ?!?, gostaria de saber se alguem sabe como deixar o funco "branco" de tela, mas "branco" mesmo, nao o cinza habitual q fica.

Exemplo: Letra Azul e fundo branco
set color to b+/w

Obrigado por todos, abraco ...

Ajuda com cores de tela

Enviado: 04 Out 2012 11:48
por Pablo César
Veja o exemplo este exemplo:

Código: Selecionar todos

SetMode(25,80)
SetColor("gr+/n")
For i=0 to 24
    @ i,00 Say Replicate(Chr(219),80) Color "w+/b"
Next
DBGShadow(05,10,18,50)
@ 05,10 To 18,50
For i=6 to 17
    @ i,11 Say Replicate(Chr(219),39) Color "gr+/w"
Next
@ 24,00 Say PadC("Tecle uma tecla para continuar...",80) Color "N/W"
Inkey(0)
Compile e verá este resultado:
Tela50.PNG
Você também pode alterar as tonalidades e até mesmo a cor original que o Clipper oferece através da função VGAPALETTE() da biblioteca CT.Lib, para maiores detalhes leia este tópico: https://pctoledo.org/forum/viewto ... ilit=cores

Ajuda com cores de tela

Enviado: 04 Out 2012 12:22
por alxsts
Olá!

Legal o exemplo do Pablo mas, para o que foi pedido, creio que baste:

Código: Selecionar todos

SetColor( "B+/W*" )

Ajuda com cores de tela

Enviado: 04 Out 2012 12:26
por Pablo César
creio que baste:
                          SetColor( "B+/W*" )
O asterisco serve para deixa piscando. E a sua indicação simplesmente não funciona no fundo quando utilizado "W+". Por isso foi colocado o caracter cheio ( Chr(219) ) para que pudesse aparecer qualquer cor como fundo. A não ser que atarvés do VGAPALETTE mude a cor "W" (branco cinza) para uma cor mais intensa como branco total.

Ajuda com cores de tela

Enviado: 04 Out 2012 12:33
por alxsts
Olá!

Testei em xHarbour e funciona perfeitamente. Para desativar o fundo piscante é só colocar antes um:

Código: Selecionar todos

SetBlink( .F. )
Infelizmente não tenho o Clipper instalado para testar nele.

Ajuda com cores de tela

Enviado: 04 Out 2012 12:45
por Pablo César
Esclarecendo...

Pior Alexandre que funciona em Clipper, mas tem que colocar o SetBlink( .F. ), eis o código exemplo e tela:

Código: Selecionar todos

SetBlink( .F. )
SetMode(25,80)
SetColor( "B+/W*" )
cls
SetColor("gr+/n")
DBGShadow(05,10,18,50)
SetColor("gr+/n")
@ 05,10 To 18,50
SetColor("n/gr+")
@ 06,11 Clear To 17,49
@ 24,00 Say PadC("Tecle uma tecla para continuar...",80) Color "N/W"
Inkey(0)
Pena que a sombra fica preta e não cinza como apareceu no meu primeiro exemplo. A cor amarela do quadro interno também naõ ficou com amarelo intenso.
Tela51.PNG
Se substituir o "+" pelo "*" ai funciona normal. Rs vai saber... !! Mas a sombra continua preta e não cinza... rs

Ajuda com cores de tela

Enviado: 04 Out 2012 12:59
por alxsts
Olá!

Funciona sim. Usei isso durante muitos anos em Clipper.

Se puder, tente fazer a sombra com o código abaixo e veja se fica melhor que aquela área preta. Peguei isso em algum lugar. Nem sei como funciona mas dá um aspecto melhor.

Código: Selecionar todos

/***
*
*  BoxShadow( <nTop>, <nLeft>, <nBottom>, <nRight> ) --> NIL
*
*  Draw a box shadow with see through
*
*/
//------------------------------------------------------------------------------
FUNCTION BoxShadow( _Li, _Ci, _Lf, _Cf )

   LOCAL Tela1, Tela2, Tela3, Tela4

   Tela3 := SaveScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1)
   Tela4 := SaveScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1)

   For Tela1:= 2 to Len(Tela3) step 2
      Tela2:= shadow(Asc(Substr(Tela3,Tela1,1)))
      Tela3:= Stuff(Tela3,Tela1,1,Tela2)
   End

   For Tela1:= 2 to Len(Tela4) step 2
      Tela2:= shadow(Asc(Substr(Tela4, Tela1,1)))
      Tela4:= Stuff(Tela4,Tela1,1,Tela2)
   End

   RestScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1, Tela3)
   RestScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1, Tela4)

   Return NIL

//------------------------------------------------------------------------------
STATIC FUNCTION Shadow(_Car)
      Local Var1, Var2, Var3
      Var1:= _Car % 16
      Var2:= (_Car - Var1) / 16
      Var3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7}
      Var1:= Var3[Var1 + 1]
      Var2:= Var3[Var2 + 1]
   RETURN Chr(16 * Var2 + Var1)

//------------------------------------------------------------------------------

Ajuda com cores de tela

Enviado: 04 Out 2012 13:10
por Pablo César
Funcionou desta vez Alexandre, obrigado e desculpe a minha precipitação. Eu não sabia que o asterisco pudesse funcionar para alterar a intensidade após o SetBlink(.f.). Ficou igualzinha !

Código: Selecionar todos

SetBlink( .F. )
SetMode(25,80)
SetColor( "B+/W*" )
cls
BoxShadow(05,10,18,50)
SetColor("gr+/n")
@ 05,10 To 18,50
SetColor("n/gr*")
@ 06,11 Clear To 17,49
@ 24,00 Say PadC("Tecle uma tecla para continuar...",80) Color "N/W"
Inkey(0)


FUNCTION BoxShadow( _Li, _Ci, _Lf, _Cf )
LOCAL Tela1, Tela2, Tela3, Tela4

Tela3 := SaveScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1)
Tela4 := SaveScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1)
For Tela1:= 2 to Len(Tela3) step 2
   Tela2:= shadow(Asc(Substr(Tela3,Tela1,1)))
   Tela3:= Stuff(Tela3,Tela1,1,Tela2)
End
For Tela1:= 2 to Len(Tela4) step 2
   Tela2:= shadow(Asc(Substr(Tela4, Tela1,1)))
   Tela4:= Stuff(Tela4,Tela1,1,Tela2)
End
RestScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1, Tela3)
RestScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1, Tela4)
Return NIL

STATIC FUNCTION Shadow(_Car)
Local Var1, Var2, Var3
Var1:= _Car % 16
Var2:= (_Car - Var1) / 16
Var3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7}
Var1:= Var3[Var1 + 1]
Var2:= Var3[Var2 + 1]
RETURN Chr(16 * Var2 + Var1)
Com a mesma aparência da primeira tela:

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 13:21
por alxsts
Olá!

Legal! São os guardados do fundo do baú...

Talvez fosse interessante colocar esta rotina de sombra em um local separado, para facilidade de acesso e localização. Não sei se na Seção de Downloads ou na parte de Contribuições...

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 16:02
por EduardoSPno
Fala galera, valeu pela força, mas acho q faltou dizer uma coisinha, nos exemplos a tela fica branca utilizando o replicate(chr)219)), mas por exemplo se eu for deixar algo digitado no meio, ta la a faixa cinza (em vez do branco) e a letra da cor desejada ....

@00,00 Say Replicate(Chr(219),80) Color "w+/b"

AK SO PRA VER COMO FICA:
@10,10 say "TESTE DE LETRA COM FUNDO BRANCO !!"

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 16:19
por EduardoSPno
HEHE, Falha minha ak galera, se utilizar o SETBLINK( .F. ) o fundo fica legal, assim da pra utilizar o branco sem problemas no fundo das letras, o unico probleminha é q nao sera mais possivel exibir uma mensagem piscando "*", sendo q o mesmo no SETBLINK exibe o branco, e nao o piscante ....

Agradeco muito a atencao de todos, um CLIP ABRACO !!!

Aproveitando, alguem ja conseguiu rodar a biblioteca VL2_52.LIB no WIN7???, a tela fica toda desconfigurada ...

Valeu galera ....

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 16:36
por alxsts
Olá!

Uma opção para exibir uma mensagem piscando seria habilitar o SetBlink( .T. ), exibir a mensagem e desabilitar SetBlink( .F. ).

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 19:46
por Pablo César
alxsts escreveu:Uma opção para exibir uma mensagem piscando seria habilitar o SetBlink( .T. ), exibir a mensagem e desabilitar SetBlink( .F. ).
Bom não creio nesse caso que as cores continuem funcionando (iriam retornar as cores não desejadas) e sendo em Clipper no XP o piscar não funciona ao menos em modo janelado.

Para não quebrar a idéia do que foi indicado e dependendo de que forma quer mostrar as mesnagens de piscar, teria outra forma:

Código: Selecionar todos

SetBlink( .F. )
SetMode(25,80)
SetColor( "B+/W*" )
cls
BoxShadow(05,10,18,50)
SetColor("gr+/n")
@ 05,10 To 18,50
SetColor("n/gr*")
@ 06,11 Clear To 17,49
@ 24,00 Say PadC("Pressione <Esc> para sair...",80) Color "N/W"
SetCursor(0)
nKey:=0
Do While nKey=0
   nKey:=Inkey(0.3)
   @ 10,20 Say "Texto piscando..." Color "bg+/b"
   nKey:=Inkey(0.3)
   @ 10,20 Say "                 " Color "gr/gr*"
Enddo


FUNCTION BoxShadow( _Li, _Ci, _Lf, _Cf )
LOCAL Tela1, Tela2, Tela3, Tela4

Tela3 := SaveScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1)
Tela4 := SaveScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1)
For Tela1:= 2 to Len(Tela3) step 2
   Tela2:= shadow(Asc(Substr(Tela3,Tela1,1)))
   Tela3:= Stuff(Tela3,Tela1,1,Tela2)
End
For Tela1:= 2 to Len(Tela4) step 2
   Tela2:= shadow(Asc(Substr(Tela4, Tela1,1)))
   Tela4:= Stuff(Tela4,Tela1,1,Tela2)
End
RestScreen(_Li + 1, _Cf + 1, _Lf + 1, _Cf + 1, Tela3)
RestScreen(_Lf + 1, _Ci + 1, _Lf + 1, _Cf + 1, Tela4)
Return NIL

STATIC FUNCTION Shadow(_Car)
Local Var1, Var2, Var3
Var1:= _Car % 16
Var2:= (_Car - Var1) / 16
Var3:= {0, 0, 8, 8, 0, 8, 0, 8, 0, 1, 2, 3, 4, 5, 6, 7}
Var1:= Var3[Var1 + 1]
Var2:= Var3[Var2 + 1]
RETURN Chr(16 * Var2 + Var1)
Mas outra forma (por não dizer gambiarra de simular uma mensagem que pisca...

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 19:51
por alxsts
Olá!

Pensei nisso hahaha mas achei muita POG. Afinal nem gosto de mensagens piscando, prefiro um Alert(), não esquecendo que esta função tem um terceiro parâmetro para configurar a cor desejada.

Cores de tela de fundo - Branco e amarelo intensos

Enviado: 04 Out 2012 23:06
por JoséQuintas
Aproveitando o post.
Ao modificar as cores padrão percebi o seguinte:
Usando número ao invés de letras o resultado é certo.
Tipo... W+ equivale a cor 15.
SetColor("0/15")
SetColor("N/W+")
Por letra, o + não tem efeito na cor de fundo.