A lona é legal! - página 85

 
Nikolai Semko #:
Infelizmente, na MQL4 não há possibilidade de anexar um recurso como uma matriz. Mas todo o resto funciona.
É claro que é possível implementá-lo por meio de pandeiros rígidos. Por exemplo, insira uma imagem PNG em um arquivo BMP, ou seja, adicione um cabeçalho BMP ao início do png e passe o próprio png como uma imagem bmp (ou seja, se você abrir esse BMP, haverá um ruído de pixels coloridos de transparência diferente). E, em seguida, anexe esse "arquivo bmp" como um recurso em MQL4. Isso pode ser necessário para o mercado, de modo que o ex4 já contenha uma imagem de um formato png mais denso.
Para referência: png é cerca de 10 vezes menor do que a mesma imagem BMP sem perda de qualidade, além de suportar transparência total.
O verdadeiro recurso bmp no arquivo ex4 é armazenado em um formato compactado, mas não em uma ordem de magnitude menor. É necessário verificar com exatidão.

A propósito, nunca consegui inserir BMP com canal alfa em MQL4 quando a imagem tem transparência como png. Ou ela não aparece ou não compila.

Houve uma discussão aqui https://www.mql5.com/en/forum/157832 Como resultado, ele só é adequado para o MT5. Mas é interessante que o BMP exista com canal alfa.

Também não funcionou com PNG... ou não descobri como.


Sobre a tela e o dimensionamento, obrigado, vou tentar no mq4.

 
Vitaliy Kuznetsov #:

A propósito, nunca consegui inserir BMP com canal alfa em MQL4, quando a imagem tem transparência como png. Ela não é exibida ou não é compilada.

Houve uma discussão aqui https://www.mql5.com/en/forum/157832 Como resultado, ele só é adequado para o MT5. Mas é interessante que existam BMPs com canal alfa.

Ele também não funcionou com PNG... ou não sabia como.


Sobre a tela e o dimensionamento, obrigado, vou tentar no mq4.

Não há nenhum erro de intermitência na MQL4.
A versão da mql4 está anexada.

Arquivos anexados:
 
Nikolai Semko #:

Não há nenhum erro de intermitência na MQL4.
A versão mql4 está anexada.

É uma adaptação. Obrigado!

 

No início, fiquei feliz, mas agora estou perplexo. Não consigo carregar um arquivo de fora por meio de configurações no indicador, mas não dentro do arquivo compilado.

Nikolai Semko, se você tiver tempo, escreva se isso é possível. E se tiver um exemplo de configuração de transparência e seleção de arquivo, poderá me ajudar.

 
Vitaliy Kuznetsov #:

No início, fiquei feliz, mas agora estou perplexo. Não consigo carregar um arquivo de fora por meio de configurações no indicador, mas não dentro do arquivo compilado.

Nikolai Semko, se você tiver tempo, por favor, escreva se isso é possível. E se tiver um exemplo de configuração de transparência e seleção de arquivo, você me ajudará.

Não entendo qual é a dificuldade de carregar o png como matriz uchar e, em seguida, alimentá-lo no objeto da classe Png.
Não é nada difícil adicionar o método LoadPngFromFile(string file_name) à classe Png. Eu simplesmente não me propus a essa tarefa, por isso não a implementei. Mas você pode facilmente lidar com isso.
h ttps://www.mql5.com/ru/docs/files/filereadarray
Observe o construtor da classe Png, que recebe como entrada um array uchar[] , que contém o arquivo png inteiro.

*

Opa, eu sou burro. O segundo construtor que recebe um nome de arquivo já foi implementado. Então não vejo nenhuma dificuldade.

CPng::CPng(string file_path, bool create_canvas = false, int x = 0, int y = 0);
Документация по MQL5: Файловые операции / FileReadArray
Документация по MQL5: Файловые операции / FileReadArray
  • www.mql5.com
FileReadArray - Файловые операции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaliy Kuznetsov #:

No início, fiquei feliz, mas agora estou perplexo. Não consigo carregar um arquivo de fora por meio de configurações no indicador, mas não dentro do arquivo compilado.

Nikolai Semko, se você tiver tempo, escreva se isso é possível. E se tiver um exemplo de configuração de transparência e seleção de arquivo, poderá me ajudar.

Aqui está uma nova versão do CPng, que tem a função LoadPngFromFile().

Arquivos anexados:
Png.mqh  38 kb
 
Nikolai Semko #:
Não entendo a dificuldade de fazer upload de um png

De fato... nem sempre é fácil)

Nikolai Semko #:
aqui está uma nova versão do CPng, que tem a função LoadPngFromFile().

Obrigado, vou tentar

 
Nikolai Semko #:
Não entendi qual é a dificuldade de carregar o png como uma matriz uchar e depois transformá-lo em um objeto da classe Png.

Descobri que os PNGs externos, o carregamento, o dimensionamento e a transparência funcionam. Mas...

É realista compilar um PNG dentro de um arquivo?

A funcionalidade padrão ...

#resource "\\Files\\123.png"

string nam_img = "::Files\\123.png"

... dá um erro de compilação

Eu não entrei no mérito de que o software funciona com um arquivo externo, mas como fazer com que todo o produto final seja um único arquivo?

Caso contrário, o sentido prático desse recurso se perderá. Não tentei fazer isso no MT5. No MT4, há um erro de conexão.


P.S. Presumo que, teoricamente, seja possível escrever um script que converta PNG em código e nós o colocaremos, digamos, no MQH e trabalharemos com eles como parte de um contêiner. Mas eu não consigo escrever esse script. As matrizes de imagens são uma floresta cega para mim.

 
Vitaliy Kuznetsov #:

PNGs externos resolvidos, carregamento, dimensionamento e transparência funcionam. Mas...

É realista compilar um PNG dentro de um arquivo?

Você pode inserir o arquivo como uma matriz e, em seguida, acessar essa matriz.


Anexei um exemplo

Arquivos anexados:
Resurs.mq5  634 kb
 
Vitaliy Kuznetsov #:

É possível compilar PNG em um arquivo?

Peça aos desenvolvedores para inserir o PNG aqui.

Tenho certeza de que eles concordarão.