Atenção, concurso! - página 13

 

Oops )

Eu concordo com a opção do derebane e uma discussão pública seria muito útil.

 
TheXpert:
Sim, isso é um problema. Este tópico exige komposter e tol64

Obrigado. Eu não entrei na competição porque atualmente estou trabalhando em um projeto muito grande. Em breve estará disponível para todos. Haverá muito a discutir e talvez seja possível organizar vários concursos com base nisso também. Ainda não posso dar mais detalhes. )

 
Bem, aqui vamos nós :)
Класс для работы с кнопками произвольной формы
Класс для работы с кнопками произвольной формы
  • 2015.03.18
  • Dmitriy Parfenovich
  • www.mql5.com
Класс предназначен для создания интерактивных кнопок на графике цены с различными состояниями.
 
fyords:
Aqui vamos nós :)

O meu ainda está sendo testado... Informá-lo-ei quando o vir...

Adicionado:

Aí vem minha opção:)

 
fyords:

Dê uma olhada - 5 pontos :) Se o usuário não precisar da biblioteca padrão, sua versão é melhor.

Na verdade, estou me preocupando com esta biblioteca porque tenho um programa com o qual estou trabalhando agora, escrito com base nele. O projeto é muito desajeitado, eu queria melhorá-lo. E aqui acabo de receber um concurso, que é muito relevante para mim.

A partir dos prós de sua implementação:

1)Não há muletas. Eu tenho isso e herança de classes padrão e outros prazeres para apoiar a compatibilidade com a biblioteca padrão.

2) Ostatus do botão e o status do objeto no gráfico coincidem.

3)As funções têm verificação de valores de entrada para erros. Eu, em alguns lugares, ignorei isto...

4) Osbotões são criados mais elegantemente no Expert Advisor (através do ciclo aninhado). Ainda não pensei sobre isso.

5)Você pode definir não apenas o ângulo do gráfico, mas também o ângulo do botão. Sinceramente - não sei onde pode ser útil :) mas talvez...

6) Eu tenho6 fotos. Eu tenho 4.

7)CCanvas - você pode escrever algo no botão, adicionar um par de funções e pronto.É muito conveniente no caso de aplicações em vários idiomas. Eu teria que fazer muletas novamente.

8)Seu código é muito mais rápido de entender.

Tenho notado algumas melhorias:

1)Se você reduzir o bate-papo para que o botão fique parcialmente oculto (inferior ou superior) - a luz de fundo do botão não é reinicializada (ver foto) .

2)Não vi uma opção para criar um "botão anti-aderente".Isto é, botão que afundou e caiu imediatamente (semelhante aos botões padrão).

3)Você tem uma maneira muito mais complicada de definir transparência. Não entendo nem mesmo como funciona em todos os lugares. Se você mesmo preparar as imagens, é mais fácil fazer como eu fiz. Isto é,eu apenas pego a transparência da imagem com função (graças à Integer ):

double GetAlfa(uint  aColor)
  {
   return((aColor>>24)&0xff);
  }

E então eu o verifico com o nível limite (tomei 250, mas é claro que preciso acrescentar função, para que eu possa defini-lo):

 double alfa=GetAlfa(data[y*m_SizeX+x]);
 if(alfa>250)
   {
    m_T[y*m_SizeX+x]=true;
   }
 else
   {
   m_T[y*m_SizeX+x]=false;
   }

Embora, se você trabalha com imagens prontas sem abrir o editor gráfico, então é provável que sua versão seja mais conveniente.

ZS: Acabei de notar que a classe CCanvas também tem a função de definição de transparência:

#define  GETRGBA(clr)   uchar((clr)>>24)
 

Obrigado. Vou dar uma olhada na sua.

MigVRN:

O que eu notei que poderia ser melhorado: ...

  1. Se o ponteiro sair pela janela, o evento "mover o mouse" não é gerado e, portanto, parece impossível corrigir este erro.
  2. A tarefa não os teve, embora não seja preciso muito esforço para consertá-los.
  3. Com transparência me parece que tudo é mais simples: tomando 2e pontos (o mais escuro e o mais brilhante), o valor médio será um limiar. Se houver áreas transparentes na imagem, então a cor mais escura mudará para 0. Portanto, o valor limite também mudará.
    Esta decisão foi tomada porque a mesma função funciona tanto com transparência quanto com uma máscara separada.
    Gostaria também de mencionar que este método (máscara separada) permite o uso de imagens sem transparência. Bem, talvez o desenvolvedor não seja bom com editores gráficos :)
    Ou, variante com especificação da cor da máscara - como variante para especificar a cor branca para botão verde e "se tornará transparente", sem danças adicionais em torno de transparência e máscaras adicionais.
 
MigVRN:

Eu fiz um trabalho para você lá... Estou aguardando a resposta.

Obrigado aos participantes.

 
TheXpert #:
Sim. A área do botão na foto é uma área opaca.