La tela è forte! - pagina 85

 
Nikolai Semko #:
Purtroppo, in MQL4 non esiste la possibilità di allegare una risorsa come array. Ma tutto il resto funziona.
Naturalmente, è possibile implementarlo tramite tamburelli rigidi. Ad esempio, inserire un'immagine PNG in un file BMP, cioè aggiungere un'intestazione BMP all'inizio del png e passare il png stesso come immagine bmp (cioè se si apre un tale BMP, ci sarà un rumore di pixel colorati di diversa trasparenza). E poi allegare questo "file bmp" come risorsa in MQL4. Questo potrebbe essere necessario per il mercato, in modo che ex4 contenga già un'immagine di un formato png più denso.
Per riferimento: il formato png è circa 10 volte più piccolo della stessa immagine BMP senza perdita di qualità, inoltre supporta la trasparenza completa.
La vera risorsa bmp nel file ex4 è memorizzata in un formato compattato, ma non di un ordine di grandezza inferiore. È necessario verificare con precisione.

A proposito, non sono mai stato in grado di inserire BMP con canale alfa in MQL4 quando l'immagine ha una trasparenza come png. Non viene visualizzato o non viene compilato.

C'è stata una discussione qui https://www.mql5.com/en/forum/157832 Di conseguenza, è adatto solo per MT5. Ma è interessante che il BMP esista con il canale alfa.

Non ha funzionato nemmeno con PNG... o non ho capito come.


Per quanto riguarda il canvas e il ridimensionamento, grazie, lo proverò su mq4.

 
Vitaliy Kuznetsov #:

A proposito, non sono mai stato in grado di inserire BMP con canale alfa in MQL4, quando l'immagine ha trasparenza come png. Non viene visualizzata o non viene compilata.

C'è stata una discussione qui https://www.mql5.com/en/forum/157832 Di conseguenza, è adatto solo per MT5. Ma è interessante che esistano BMP con canale alfa.

Non ha funzionato nemmeno con i PNG... o non ha capito come.


Per quanto riguarda il canvas e il ridimensionamento, grazie, lo proverò su mq4.

Non c'è nessun bug di lampeggiamento in MQL4.
In allegato la versione mql4.

 
Nikolai Semko #:

Non c'è nessun bug di lampeggiamento in MQL4.
In allegato la versione mql4.

Questo è un adattamento. Grazie!

 

All'inizio ero contento, ma ora sono perplesso. Non riesco a caricare un file dall'esterno attraverso le impostazioni dell'indicatore, ma non all'interno del file compilato.

Nikolai Semko, se hai tempo, scrivi se è possibile. E se hai un esempio di impostazione della trasparenza e di selezione del file, puoi aiutarmi.

 
Vitaliy Kuznetsov #:

All'inizio ero contento, ma ora sono perplesso. Non riesco a caricare un file dall'esterno attraverso le impostazioni dell'indicatore, ma non all'interno del file compilato.

Nikolai Semko, se hai tempo, scrivi se è possibile. E se hai un esempio con l'impostazione della trasparenza e la selezione del file, mi aiuterai.

Non capisco quale sia la difficoltà nel caricare il png come array di uchar e poi inserirlo nell'oggetto di classe Png.
Non è affatto difficile aggiungere il metodo LoadPngFromFile(string file_name) alla classe Png. Solo che non mi ero prefissato un compito del genere, quindi non l'ho implementato. Ma si può fare facilmente.
h ttps://www.mql5.com/ru/docs/files/filereadarray
Osservate il costruttore della classe Png, che prende in input un array uchar[] , che contiene l'intero file png.

*

Ops, sono stupido. Il secondo costruttore che accetta un nome di file è già stato implementato. Allora non vedo alcuna difficoltà.

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

All'inizio ero contento, ma ora sono perplesso. Non riesco a caricare un file dall'esterno attraverso le impostazioni dell'indicatore, ma non all'interno del file compilato.

Nikolai Semko, se hai tempo, scrivi se è possibile. E se hai un esempio di impostazione della trasparenza e di selezione del file, puoi aiutarmi.

Ecco una nuova versione di CPng, che ha la funzione LoadPngFromFile().

File:
Png.mqh  38 kb
 
Nikolai Semko #:
Non capisco la difficoltà nel caricare una png

Infatti..., non è sempre facile)

Nikolai Semko #:
ecco una nuova versione di CPng, che ha la funzione LoadPngFromFile().

Grazie, la proverò

 
Nikolai Semko #:
Non ho capito qual è la difficoltà di caricare il png come array di uchar e poi trasformarlo in un oggetto di classe Png.

Ho capito che i PNG esterni, il caricamento, il ridimensionamento, la trasparenza funzionano. Ma...

È realistico compilare un PNG all'interno di un file?

La funzionalità standard ...

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

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

... dà un errore di compilazione

Non sono entrato nel merito del fatto che il software funziona con un file esterno, ma come fare in modo che l'intero prodotto finale sia un unico file?

Altrimenti si perde il senso pratico di questa funzione. Non l'ho provato nella MT5. Nella MT4 si verifica un errore di connessione.


P.S. Presumo che teoricamente sia possibile scrivere uno script che converta il PNG in codice e lo inserisca, ad esempio, in MQH e lavori con loro come parte di un unico contenitore. Ma non sono in grado di scrivere uno script del genere. Gli array di immagini sono una foresta cieca per me.

 
Vitaliy Kuznetsov #:

I PNG esterni sono stati risolti, il caricamento, il ridimensionamento e la trasparenza funzionano. Ma...

È realistico compilare un PNG all'interno di un file?

È possibile inserire il file come array e poi accedere a questo array.


Allego un esempio

File:
Resurs.mq5  634 kb
 
Vitaliy Kuznetsov #:

È realistico compilare PNG all'interno di un file?

Chiedete agli sviluppatori di inserire il PNG qui.

Sono sicuro che saranno d'accordo.