Página 1 de 2

Dúvidas com imagem no GTWVG

Enviado: 04 Mar 2018 20:49
por porter
Olá pessoal, estou usando essa rotina para mostrar a imagem de um arquivo .jpg na tela principal do sistema,
mas estou com as seguintes dúvidas compilando com HABOUR 3.2.0(dev) GTWVG:

1-A tela principal do sistema demora para abrir e todas as outras telas chamadas, demoram também por causa dessa imagem
com tamanho de 20 KB.
2-Como faço para a imagem ficar apenas na tela principal do sistema, no caso de imagens, tem como restaurar a tela ?

Código: Selecionar todos

STATIC PROCEDURE IMAGEM	
   LOCAL aPaint
   Wvt_SetGui( .T. )
   SetMode( 25, 80 )
   SetColor( "N/W" )
   aPaint := {}
   AAdd( aPaint, { NIL , { || Wvt_DrawImage(21, 1 , 22, 78, "rodape.jpg"   ) }   , NIL } ) // linha, coluna, linha,coluna

   WvtSetPaint( aPaint )
   @ 23, 0
*  WAIT
   RETURN

FUNCTION Wvt_Paint()
   WvtPaintObjects()
   RETURN NIL

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 00:07
por Jairo Maia
Olá Porter,

Teste esse exemplo e veja se ajuda:

Para compilar: Hbmk2 exemplo.prg gtwvg.hbc

Código: Selecionar todos

Function Main()

  SetMode( 25, 85 )  // WideScreen
  
  Wvt_SetFont( "Lucida Console", 30, 14, 0 )

  SetColor( "N/W" )   // cor da tela
  Clear Screen        // pinta a tela
   
  @ 10, 03 Say "Teste de Imagem com GTWVG"  // necessário algo ser enviado a tela antes de enviar a imagem
   
  Wvt_DrawBoxRaised( 1, 2, MaxRow()-1, MaxCol()-2 )  // monta um box 3d na tela toda

  Wvt_DrawBoxRaised( 21, 3, 22, 81 )    // box 3d da imagem
  Wvt_DrawImage(21, 3 , 22, 81, "rodape.jpg"   ) // mostra a imagem
   
  Inkey(0)

Return

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 09:51
por porter
Olá Jairo,
Pelos testes que fiz, para restaurar a tela com a imagem, tenho que executar novamente
essa rotina você passou, SAVESCREEN e RESTSCREEN não funcionam ?

Obrigado.

HARBOUR 3.2.0(dev) GTWVG

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 10:48
por Jairo Maia
Porter,

Altere SaveScreen() e RestScreen() respectivamente para:

Código: Selecionar todos

cTela := Wvt_SaveScreen( 0, 0, MaxRow(), MaxCol() )  // salva a tela
Wvt_RestScreen( 0, 0, MaxRow(), MaxCol(), cTela )  // restaura a tela

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 12:11
por alaminojunior
O grande enrosco dessa lib GTWVT/WVG é exatamente esse: os objetos gráficos (imagens, frames, etc ...) não são restaurados com a função restscreen(), e se não houve nenhuma mudança desde o tempo em que usei, a função wvt_restscreen() também não restaura, obrigando a repintura, como o colega já experimentou.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 13:54
por JoséQuintas
Salvar/Restaurar tela não serve.
Isso seria igual um print-screen, mas não vale caso a janela seja redimensionada.

A GTWVG usa o "papel de parede" como sendo a tela console.
Essa área precisa sempre ser redesenhada.

A opção é criar um array com os controles a serem redesenhados, pra ser usado em WVT_Paint().
E ajustar o array conforme o que for necessário pra tela.

A não ser que use menu Windows na GTWVG, e aí a tela toda fica disponível pra uma imagem ou button.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 13:59
por JoséQuintas
Não tinha pensado nisso antes, mas talvez dê pra melhorar usando a Bostaurus da HMG.
Poderia ser usada pra salvar a tela, e restaurar de forma ampliada/reduzida.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 14:35
por Jairo Maia
Olá Pessoal,

Nossa.... Uso GTWVG há uns 4 anos, e é tão simples.... Salvo e restauro tela sem problemas....

NOTA: E tem imagens nelas. Exemplo:
Tela com GTWVG.jpg

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 17:26
por porter
Obrigado Jairo pela atenção, deu certo.
Restaurou perfeitamente a imagem.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 17:31
por alaminojunior
Restaurou perfeitamente a imagem.
Só para desencargo de consciência ... por favor faça o seguinte teste:
Abra a janela onde exibe a imagem, em seguida minimize esta janela.
Em seguida, restaure a janela e verifique se a imagem permanece.

Era um dos problemas que eu tinha com GTWVT/GTWVG

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 18:17
por JoséQuintas
Era um dos problemas que eu tinha com GTWVT/GTWVG
Isso sempre vai existir. Ou usa componentes GUI, ou tem que fazer seu controle pra ficar redesenhando tudo.
Isso não é exclusividade GTWVG, é um comportamento no Windows: qualquer linguagem de programação que use uma janela pra desenhar vai ter esse mesmo problema.

Ou usa objetos GUI, que são janelas menores sobre a janela normal, ou então vai ter que ficar redesenhando TUDO.
CLS, mover janela, resize, maximizar, minimizar, etc. tudo isso faz tudo sumir, e o Harbour/GT só retorna automaticamente o texto.

Se fizer a mesma coisa no Visual Basic, vai ter o mesmo resultado: as coisas vão sumir.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 18:21
por JoséQuintas
Sobre restaurar a tela:

Tente redimensionar pra ver o que acontece...
Não vai conseguir restaurar nem com reza brava, porque o tamanho não vai mais ser o mesmo.
Só funciona se a janela continuar com exatamente o mesmo tamanho.

Somente o texto pode ser restaurado totalmente, porque o texto SEMPRE vai ser proporcional ao tamanho da janela, então dá pra salvar/restaurar texto sem problemas, como se fosse uma tela console.

Seria o equivalente a, no console, salvar uma tela 25 X 80 e restaurar numa tela 43 x 80, não dá, vai faltar conteúdo.
Com imagem piorou, porque em texto pelo menos dá pra ver letras fora de lugar, mas em imagem.... vai misturar mesmo.

A não ser que deixe sempre o tamanho da janela FIXO, aí sim, dá certo.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 18:55
por Jairo Maia
Olá Pessoal,
JoséQuintas escreveu:Tente redimensionar pra ver o que acontece...
Eu desativo o botão de redimensionamento. Nunca vi necessidade dele, e nunca me pediram. Talvez pela característica do seguimento que o sistema atende: Comércio Varejista (CF-e-SAT) ou Lojas e Atacadista (NF-e).
JoséQuintas escreveu:A não ser que deixe sempre o tamanho da janela FIXO, aí sim, dá certo.
Sim.

Dúvidas com imagem no GTWVG

Enviado: 05 Mar 2018 19:23
por JoséQuintas
No caso dessa sua janela, teria que usar wvt_Paint() e um array contendo as duas imagens de cima, e provavelmente os textos de tamanho diferente.
Ou.... talvez usar aqueles controles que criei pra imagem e texto, que são GUI, mas não tenho certeza porque não uso ainda.... rs

Dúvidas com imagem no GTWVG

Enviado: 06 Mar 2018 00:26
por Jairo Maia
JoséQuintas escreveu:No caso dessa sua janela, teria que usar wvt_Paint()
Para permitir usar o redimensionamento creio que sim, pra recalcular as coordenadas.

Em Julho de 2014, postei nesse tópico: https://pctoledo.org/forum/viewto ... 836#p89836 um exemplo de como usar a Wvt_Paint(), mas depois que o Viktor Szakats reescreveu a GTWVW, também alterou as funções Wvt_SaveScreen() e Wvt_RestScreen(). Como elas servem também para a GTWVG, hoje mesmo minimizando a janela e depois restaurando não apaga as imagens, quer seja pelo botão superior ou na barra de tarefas.