Harika, kesinlikle!
Ve faydalı şeyler için bile kullanılabilir ;)
Harika, kesinlikle!
Ve faydalı şeyler için bile kullanılabilir ;)
İnsanların tuvali faydalı şeylerde kullanmaya başlaması için işe yaramaz şeyler göstererek başlamanız gerekir. :))
Derlemeden önce m_pixels[] dizisini protected:'den Canvas.mqh dosyasındaki public'e aktarmak gerekir:
SB'de hiçbir şeyi değiştiremezsiniz.
class CCanvas2 : public CCanvas { private : int Pos; public : CCanvas2* operator []( const int iPos ) { this .Pos = iPos; return (& this ); } void operator =( const uint Color ) { this .m_pixels[ this .Pos] = Color; } };
CCanvas2 C; //.. // C.m_pixels[pos]=XRGB(h[int(d*11520)],h[int(d*17920)],h[int(d*6400)]); C[pos] =XRGB(h[ int (d* 11520 )],h[ int (d* 17920 )],h[ int (d* 6400 )]);
SB'de hiçbir şeyi değiştiremezsiniz.
Güzel! :))
Ama ne yazık ki ücretsiz değil.
Kontrol. MT5'teki genel yavaşlama ~%11 idi
Güzel! :))
Ama ne yazık ki ücretsiz değil.
Kontrol. MT5'teki genel yavaşlama ~%11 idi
Sizin durumunuzda, CCanvas'tan %1 kullanılır. CCanvas olmadan deneyin. Kod biraz daha karmaşık olmayacak ve hız daha da artacak.
Sizin durumunuzda, CCanvas'tan %1 kullanılır. CCanvas olmadan deneyin. Kod biraz daha karmaşık olmayacak ve hız daha da artacak.
Elbette, CCanvas sınıfı olmadan da yapabilirsiniz. Ancak kod artacak ve hız kazancı olmayacak çünkü aslında, CCanvas sınıfından, m_pixels[] grafik kaynağının sadece nokta dizisini kullanıyorum (pekala, ayrıca Update() ve Destroy() işlevleri, ancak bunlar ihmal edilebilir, çünkü onlardan tasarruf etmeyeceksiniz ).
Ve dizi de Afrika'da bir dizi. Üzerindeki hızı nasıl artırabilirsiniz? Mümkün değil. Sadece CCanvas sınıfı, bir kaynak oluştururken, onu güncellerken (daha doğrusu yeniden oluştururken) ve onu silerken bazı rutinlerle ilgilenir.
Yoksa C.m_pixels[]'in doğrudan dizi erişimi olarak derlenmediğini mi söylüyorsunuz? Bence düz ileri. Orada herhangi bir ara hareket olmadan. Ya da ben hatalıyım?
Ve bu sınıfın geliştiricileri için CreateBitmapLabel'i sınıfın kendisinin oluşturucusuna sokmak daha da mantıklı olacaktır, böylece ortaya çıkmaz. Sınıfın parametresiz yeni bir örneği oluşturulursa, bir pencere boyutunda (benim durumumda olduğu gibi) bir tuval oluşturulur ve istenirse sınıfın bir örneğini oluştururken parametreleri belirtebilirsiniz. Şahsen ben sadece bunu yaptım.
Elbette, CCanvas sınıfı olmadan da yapabilirsiniz. Ancak kod artacak ve hız kazancı olmayacak çünkü aslında, CCanvas sınıfından, m_pixels[] grafik kaynağının sadece nokta dizisini kullanıyorum (pekala, ayrıca Update() ve Destroy() fonksiyonları da, ama bunlar ihmal edilebilir, çünkü onlardan tasarruf etmeyeceksiniz. ).
Ve dizi de Afrika'da bir dizi. Üzerindeki hızı nasıl artırabilirsiniz? Mümkün değil. Sadece CCanvas sınıfı, bir kaynak oluştururken, onu güncellerken (daha doğrusu yeniden oluştururken) ve onu silerken bazı rutinlerle ilgilenir.
Yoksa C.m_pixels[]'in doğrudan dizi erişimi olarak derlenmediğini mi söylüyorsunuz? Bence düz ileri. Orada herhangi bir ara hareket olmadan. Ya da ben hatalıyım?
CCanvas - ResourceCreate sarmalayıcı. Bu nedenle, örneğin, zaten diziler şeklinde 20 hazır resminiz var. Bunları tuval aracılığıyla değiştirmek istiyorsanız, sürekli olarak pahalı ArrayCopy + Update yapmanız gerekecektir.
Ve eğer CCanvas olmadan yaparsanız, her şey yalnızca ResourceCreate+ChartRerdraw ile sonuçlanacaktır. Kod tabanına dinamik çizimli birkaç çalışma yükledim. Orada CCanvas'ın iyi olmadığı açıktı.
Elbette yardımcı olacaktır, ancak korkunç frenler olacaktır. Her şeyden önce, bir işlevi çağırmak artık ücretsiz değil. parametreler aktarılır ve kaydedilir (PixelSet'te bu referans olarak bile olmaz), tüm kayıtların yığına itilmesi ve ardından geri çekilmesi gerekir. İkinci olarak, fonksiyonun kendisinde, X ve Y'nin belirtilen aralıkta olup olmadığı kontrol edilir ve üçüncü olarak dizi indeksi hesaplanır. Ve tüm bunlara ihtiyacım yok çünkü. dizin zaten orada ve benim algoritmamda aralık dışında olmak imkansız.
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Kendime CCanvas sınıfı aracılığıyla kısa bir kod kullanarak özel grafiklerin yeteneklerini etkili bir şekilde gösterme görevini verdim.
İşte bundan böyle çıktı.
Bu komut dosyası hem MQL5 hem de MQL4'te çalışır. Yalnızca MT5'te çok daha hızlıdır.
Her kare benzersizdir ve tekrarlamaz, yani komut dosyası döngüsel değildir.
Derlemeden önce m_pixels[] dizisini protected:'den Canvas.mqh dosyasındaki public'e aktarmak gerekir: