A lona é legal! - página 6

 
Vladimir Karputov:

O retângulo não é um objeto, é um comando para desenhar um monte de pixels. É como um tiro - uma bala dispara, e uma boa viagem. Não há feedback.

Obrigado pela ausência de feedback - consegui.

Já o vi 217 vezes e agora está aberto, mas ainda não vi nenhuma solução.

Eu preciso de um exemplo ao vivo de mudança de tela e cor da moldura no OnTick().

Obrigado!

 
Vitaly Muzichenko:

Obrigado pela conexão - consegui.

Já olhei para ele 217 vezes, e agora está aberto, mas ainda não vi uma solução.

Precisa de um exemplo vivo de mudança de lona e cor da moldura no OnTick().

Obrigado!

Com base no meu código, apenas preso na mudança da cor da tela e no desenho de uma moldura.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static long counter=0;
   counter++;
   if(counter%40==0)
     {
      m_canvas.Erase(ColorToARGB(clrBlue,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrRed,255));
      m_canvas.Update();
      return;
     }
   if(counter%20==0)
     {
      m_canvas.Erase(ColorToARGB(clrRed,210));
      m_canvas.Rectangle(10,10,m_canvas.Width()-10,m_canvas.Height()-10,ColorToARGB(clrBlue,255));
      m_canvas.Update();
      return;
     }
  }


Como uso cores com transparência, especifiquei"COLOR_FORMAT_ARGB_NORMALIZE" ao criar a tela:

//--- create canvas
   if(!m_canvas.CreateBitmapLabel("SampleCanvas",5,15,700,300,COLOR_FORMAT_ARGB_NORMALIZE))
Arquivos anexados:
 
Vladimir Karputov:

Com base em meu próprio código, acabei de colocar uma mudança de cor de tela e desenhar uma moldura.


Como uso cores com transparência, especifiquei"COLOR_FORMAT_ARGB_NORMALIZE" ao criar a tela:

Vou dar uma olhada agora, obrigado!

O que eu esperava obter - há muito tempo, é uma tela pouco transparente com uma moldura e seleção, mas agora preciso mudar as cores, o que não funciona.


 
Vitaly Muzichenko:

Vou dar uma olhada agora, obrigado!

O que eu esperava obter - há muito tempo, é uma tela pouco transparente com uma borda e uma seleção, mas agora eu preciso mudar as cores, o que não funciona.


Provavelmente o problema é ENUM_COLOR_FORMAT (ao criar a tela) e o método de obter a cor.

 
Vitaly Muzichenko:

No OnInit eu crio uma lona

Depois preciso mudar a cor às 10:00 para cinza em OnTick e devolvê-la ao estado original novamente às 11:00.

Não funciona:

Pergunta:

Como posso mudar a cor da tela e da moldura - sem referência a nomes de objetos?

Obrigado!

Tenho a sensação de que você mexeu com as cores.

Qual é o significado desta linha:

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

COLOR_FORMAT_ARGB_NORMALIZE não precisa preencher a tela com a cor de fundo, mas sim enchê-la com zero:

canvas.Erase(0);

pois isso significa que a tela é completamente transparente.

Também é conveniente utilizar a representação em 16 cores:

por exemplo:

0x00000000 - preto totalmente transparente

0xFF000000 - preto opaco

0xFFFFFFFFFFFFFF - branco opaco

0xFFFFFF0000 - vermelho opaco

0xFF00FF00 - verde opaco

0xFF0000FF - azul opaco

0x8000FF00 - verde translúcido

0x80FFFFFFFFFF - preto translúcido

0xFF80808080 - cinza

etc.

 
Vladimir Karputov:

Provavelmente um problema com o ENUM_COLOR_FORMAT (ao criar o kanvas) e o método de obter a cor.

Problema resolvido.

Meu código não teve a tela removida quando fechei o terminal, então já estava na tabela na inicialização, então não se inicializou, e as mudanças de propriedade não sabiam onde aplicar.

Obrigado a todos!

 
Nikolai Semko:

Tenho a sensação de que você mexeu com as cores.

Qual é o objetivo dessa linha?

ObjectSetInteger(0,"CanvasExamlple",OBJPROP_COLOR,clrNONE);

O ponto da linha é que, sem ela, você obtém esta imagem


Se com a linha, então é isso mesmo, uma bela moldura com minha cor escolhida


 
Vitaly Muzichenko:

Problema resolvido.

Meu código não removeu a tela quando fechei o terminal, portanto já estava na tabela quando comecei, portanto não foi rubricada, e as mudanças de propriedade não sabiam onde aplicar.

Obrigado a todos!

Hmmm, você realmente não pode adivinhar onde o cão está ao mesmo tempo :)

 

Demonstração de um roteiro com escala de bitmap

No arquivo Ex5 encontra-se um arquivo BMP bastante grande como um recurso.


Arquivos anexados:
TestScaling.ex5  784 kb
 
Nikolai Semko:

Demonstração do Raster Script de Escala

Não, é realmente impressionante.

Mas, você tem que fazer algum tipo de adição útil que tire proveito de todas essas características da Tela.

Para que seus desenvolvimentos não sofressem o mesmo destino que o adaptador CGA - um maravilhoso adaptador gráfico, mal compreendido e subestimado por seus contemporâneos.

Eu mesmo sempre considerei a CGA "coxa como sempre" perdendo para o Commodore 64 ou Sinclair Spectrum de oito bits. Mas recentemente descobriu-se que, simplesmente por causa da falta de popularidade - quase ninguém utilizou todas as oportunidades deste cartão. E quase não havia jogos que pudessem competir com computadores domésticos de oito bits.

Se a IBM tivesse promovido a CGA, se esta demo tivesse aparecido em 1981 - a CGA teria sido muito mais popular, e possivelmente a EGA teria sido lançada mais tarde:


Quando olho para esta tela, não posso acreditar que isso seja possível no antigo adaptador CGA com sua memória de vídeo de 16K, conectado a uma TV doméstica comum (o monitor RGB não é adequado para isso. Essa era a idéia dos desenvolvedores - texto de maior qualidade no monitor RGB, mas pobre paleta de cores, mas rica em possibilidades gráficas com texto de má leitura na TV doméstica com uma entrada composta)

Razão: