Tuval harika! - sayfa 86

 
Aleksandr Slavskii #:

Bir dosyayı bir dizi olarak ekleyebilir ve ardından bu diziye erişebilirsiniz.


Ekli örnek

Evet, bu arada, bu işe yarıyor. Bu olasılığı bilmiyordum. Teşekkürler!
Ancak mq4 veya mqh dosyasının boyutu png dosyasının kendisinden 5 kat daha büyük olacaktır. Ancak bu oldukça işe yarar bir seçenektir, çünkü ex4 dosyasının boyutunu etkilemez. (ex5 dosyası ile aynı olacaktır).

fxsaber #:

Geliştiricilerden buraya PNG eklemesini isteyin.

Eminim aynı fikirde olacaklardır.

MT4 için herhangi bir dilek ve isteğin uygulanacağından şüpheliyim, özellikle de MT4 desteğinin yakında sona ereceği zaten duyurulmuşken.

 
Vitaliy Kuznetsov #:

Harici PNG'ler çözüldü, yükleme, ölçekleme, şeffaflık çalışıyor. Ama...

Bir PNG'yi bir dosya içinde derlemek gerçekçi midir?

Standart işlevsellik ...

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

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

... bir derleme hatası oluşturur

Yazılımın harici bir dosya ile çalıştığı gerçeğine girmedim, ancak tüm nihai ürünün tek bir dosya olmasını nasıl sağlayabilirim?

Aksi takdirde böyle bir özelliğin pratik anlamı kaybolur. MT5'te denemedim. MT4'te bir bağlantı hatası var.


Not: PNG'yi koda dönüştürecek bir betik yazmanın teorik olarak mümkün olduğunu varsayıyorum ve bunu örneğin MQH'ye koyacağız ve bunlarla tek bir kapta çalışacağız. Ama ben böyle bir betik yazamam. Resim dizileri benim için kör bir orman.

Alexander'ın önerdiğinin dışında (uchar[] dizisi ekleyerek), daha önce bahsettiğim pseudo BMP aracılığıyla bir koltuk değneği yöntemi de vardır

Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi üzerine forum

Kanvas harika!

Nikolai Semko, 2023.09.25 17:09

Maalesef, MQL4'te bir kaynağı dizi olarak ekleme imkanı yoktur. Ama diğer her şey çalışıyor.
Tabii ki, sert tefler aracılığıyla uygulanabilir. Örneğin, bir BMP dosyasına bir PNG görüntüsü ekleyin, yani png'nin başına bir BMP başlığı ekleyin ve png'nin kendisini bir bmp görüntüsü olarak geçirin (yani, böyle bir BMP'yi açarsanız, farklı şeffaflıktaki renkli piksellerden oluşan bir gürültü olacaktır). Ve sonra bu "bmp dosyasını" MQL4'te bir kaynak olarak ekleyin. Bu piyasa için gerekli olabilir, böylece ex4 zaten daha yoğun bir png formatında bir görüntü içerir.
Referans için: png, kalite kaybı olmadan aynı BMP görüntüsünden yaklaşık 10 kat daha küçüktür, ayrıca tam şeffaflığı destekler.
Ex5(ex4) dosyasındaki gerçek bmp kaynağı sıkıştırılmış bir biçimde saklanır, ancak büyüklük sırasına göre daha az değildir. Tam olarak kontrol etmek gerekir.

Png'den bmp'ye böyle bir dönüşüm gerçekleştiren bir komut dosyası yazabilirsiniz (böyle bir dosyanın sözde görüntüsünün boyutu, png dosyasının kendisinin boyutuna eşit genişlikte ve 1 piksel yükseklikte olacaktır).
Ancak başka bir algoritma ile yapabilirsiniz: Şeffaflığı olan PNG'yi şeffaflığı olan gerçek bir BMP'ye dönüştürün ve bir kaynak aracılığıyla ekleyin. Ex4 dosyasının boyutu png dosyasının boyutundan biraz daha büyük olacaktır, çünkü ex4'te bmp dosyası kaynağı paketlenmiş biçimde saklanır. Kontrol ettim - bmp ile ex4 boyutundaki artış, png formatında aynı görüntüye sahip ex4'ten% 10-30 daha fazla olacaktır.

Şahsen, Slavsky tarafından önerilen varyantı tercih ederim. Png dosyasının kendisini içerecek ayrı bir mqh dosyasına ayrı bir uchar dizisi koymak ve ardından bunu bir include aracılığıyla koda eklemek, böylece dev dizi kodu karıştırmaz.
Ayrıca, bu yöntemin avantajı, kaynaklarda olduğu gibi MQL4 sanal alanına herhangi bir grafik dosyası koymanıza gerek olmamasıdır.

 
fxsaber #:

Geliştiricilerden buraya bir PNG eklemesini isteyin.

Eminim aynı fikirde olacaklardır.

MQL5'e ekleyelim.

 
Aleksandr Slavskii #:

Bir dosyayı bir dizi olarak ekleyebilir ve ardından bu diziye erişebilirsiniz.

Ekli örnek

Şaşırtıcı, bu "Ekle" menüsü ne kadar zamandır ME'de? :O

yaşa ve öğren...

 
Renat Fatkhullin #:

MQL5'e ekleyelim.

Pazar, tüm ürünlerin her iki platform için de çoğaltıldığını gösteriyor. Büyük olasılıkla, çapraz platform olmayan varyantı kullanmayacaklar, ancak ne yazık ki BMP üzerinde oturmaya devam edecekler.


Şu anda bile MQL5'te herhangi bir dosya ekleyebilirsiniz.

// resource variables are supported by MQL5 language only
#resource "\\Files\\Picture.png" as uchar PNGBytes[]
Bu tür bir ek, bir kaynak değil, veri içeren statik bir dizi oluşturacaktır. İkinci durumda, diğer EX4/5'ten kullanılabilir gibi görünüyor.
 
Nikolai Semko #:
Şeffaflığa sahip PNG'yi şeffaflığa sahip gerçek BMP'ye dönüştürün ve kaynak aracılığıyla ekleyin.

Bu seçenek MT4'te çalışmaz, çünkü alfa kanallı BMP eklenir ancak görüntülenmez.

fxsaber #:

Pazar, tüm ürünlerin her iki platform için de çoğaltıldığını gösteriyor. Büyük olasılıkla çapraz platform olmayan varyantı kullanmayacak ve ne yazık ki BMP'de oturmaya devam edecek.

Bence PNG zaten çapraz platform haline geldi. Zaten harici dosyalarla çalışıyor. Nikolay'dan yukarıdaki örnekler.

Aleksandr Slavskii #:

Bir dosyayı bir dizi olarak ekleyebilir ve daha sonra bu diziye erişebilirsiniz.

Gerçekten de öyle. Doğrudan şaşırdım.


Geriye Canvas'ta kauçukluk, şeffaflık ve işte bu kadar - küçük bir mq4 mucizesi hazır olan her şeyi gerçekleştirmeye çalışmak kalıyor.

Tabii ki, bu çapraz platform için yapılır. Çünkü MT4'te - BMP ve MT5'te - PNG. Hiç iyi değil. Her şey PNG olmalıdır.

 
Vitaliy Kuznetsov #:

Geriye Tuval'de tüm lastiksi, şeffaf şeyi uygulamaya çalışmak kalıyor ve işte bu - küçük bir mq4 mucizesi hazır.

Yani her şey zaten hazır. PNG kütüphanesinden örnek bir test yapabilirsiniz. Sadece kaynak içeren satır

#resource "//Images//icons.png" as uchar png_data[]

satırıyla değiştirin

#include <PNG\iconspng.mqh>

iconspng.mqh dosyasında png_data[] dizisini eklediğimiz yer.

Sadece MT4'te OnChartEvent'ten zamanlayıcıya tüm maliyetli hesaplamaların çıktısını almanın önemli olduğunu hatırlamak gerekir, aksi takdirde korkunç bir şekilde gecikecektir. Tamamen MQL4 saçmalığı.
Şimdi gecikmeyen bir sürüm bırakacağım.


 
Nikolai Semko #:

Gecikmesiz bir versiyon yüklemek üzereyim.

Evet, CPU "en iyi performans" modundaysa gecikme bile olmuyor.


Dosyalar:
MQL4.ZIP  576 kb
 
Andrey Dik #:

Şaşırtıcı, ME'deki bu "Ekle" menüsü ne kadar zamandır orada? :O

yaşa ve öğren...

Bu tür dosya ekleme denemeleri yaptığım dosyalarım arasında Kasım 2019'da oluşturulmuş bir dosya buldum. Bununla daha önce de ilgilenmiştim. Ne yazık ki, görüntü dosyasının böyle bir diziden kaydedildiği betiği bulamadım.

 
Alexey Viktorov #:

Bu tür dosya ekleme denemeleri yaptığım dosyalarım arasında Kasım 2019'da oluşturulmuş bir dosya buldum. Bununla daha önce de ilgilenmiştim. Ne yazık ki görüntü dosyasının böyle bir diziden kaydedildiği betiği bulamadım.


süper! kullanışlı özellik.
Yine de, ex5 eklemek, dışa aktarılan işlevlerin bildirimleri görüntülenirse daha da kullanışlı olabilir.
Neden: