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:
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:
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:
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.
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.