Tuval harika! - sayfa 43

 
khorosh :

Buna neden ihtiyacın var, hiç bir programa ihtiyacın olmadığını yazdın.)

güzellik için
 
Реter Konow :

Teşekkür ederim. Bu, #resource komutuyla sıkıştırılmış .bmp çerçevelerinin aranması değil, değil mi? ))) Kesinlikle hayır. Bu, taşınan bir .gif okuyucusuna dayalı olarak bir MQL tuvalinde bir GIF dosyasını oynatmak için birkaç saat içinde tamamlanan doğal bir adaptördür. Muhtemelen dışarıdan bir aptal gibi görünüyorum.)))

Yuri, demo için teşekkürler ama herkes böyle bir şey yapabilir. Kolayca.

  1. Her zamanki gifi alıyoruz. Videoya kaydediyoruz.
  2. Tüm karelerini videodan alıyoruz.
  3. Çerçeveleri sayılar altında .bmp formatında kaydediyoruz.

  4. Çerçeveleri komut dosyasına #resource ile entegre ediyoruz.

  5. Çerçeveler arasında dolaşıyoruz ve bunları sonsuz bir döngüde tuval üzerinde sırayla gösteriyoruz.

Sonuç olarak, MQL programlarında standart GIF formatının çoğaltılması ile ilgisi olmayan bir sözde gif elde ederiz.

//----------------------

Katma:

Benim de bir "sahte gif"im olduğunu söyleyeceğim, ancak teknoloji çok daha karmaşık. Yazarın sıkıştırma ve oynatma mekanizmasına sahiptir. Ve en önemlisi, "sözde gifler" öğelerine eklenir ve ortak bir diziden yeniden üretilir. Sıkıştırma, #resource yönergesinden daha iyidir, çünkü çerçeveden çerçeveye değişmeyen renkler yazılmaz.


Ve animasyonlu gifleri açamayan ne tür bir video düzenleyiciniz var? Photoshop ve onları açar ve çerçeveleri katmanlar halinde düzenler. Ancak daha da basit bir çözüm var - çevrimiçi bir hizmet - oraya animasyonlu bir GIF yüklersiniz, bir dakika içinde ayrı karelerle arşivlenmiş bir babanız olur.

 
Ve neden anlaşmazlık - taşınan bir çözüm ya da değil? Format standarttır, yani onunla çalışmanın yolu standart olmalı ve bu arada, formatın geliştirilmesiyle aynı anda geliştirilmelidir.
 
Dosyalar:
puh.ex5  29 kb
 
Yury Kulikov :

 

Selamlar.

Belki biri 2 piksellik bir çizgi çizmenin neden imkansız olduğunu biliyordur? Bu nasıl bir ayrımcılık? )

 void CCanvas::PolylineThick( const int &x[], const int &y[], const uint clr, const int size, const uint style,ENUM_LINE_END end_style)
  {
   if (size<= 2 )
     {
       if (size> 0 )
         PolylineWu(x,y,clr,style);
       return ;
     }
...
 
Kalın "kalın" anlamına gelir ve 2 piksel hiç kalın değildir.
 
Dmitry Fedoseev :
Kalın "kalın" anlamına gelir ve 2 piksel hiç kalın değildir.
1 pikselden daha kalın)
 
Oleksii Chepurnyi :

Selamlar.

Belki biri 2 piksellik bir çizgi çizmenin neden imkansız olduğunu biliyordur? Bu nasıl bir ayrımcılık? )

Evet ve onu if(size<2) ile değiştirirseniz çizer, ancak beceriksizce:


@Nikolai Semko , kenar yumuşatma ile ilgili sorunlar var mı?

 
Andrey Khatimlianskii :

@Nikolai Semko , kenar yumuşatma ile ilgili sorunlar var mı?

bu işlevler çok kötü yazılmış. Orada şeytan başını yakalayacak. Normal yumuşatma yok, renk karıştırma ve şeffaflık ile normal çalışma yok. Sadece onları ezmeniz ve çöp kutusuna atmanız ve yenilerini yazmanız gerekiyor.
Bunun hakkında zaten burada yazdım.

Her durumda, standart PixelTransform işlevini kesinlikle bununla değiştirmeniz gerekir:

https://www.mql5.com/ru/forum/1111/page2553#comment_13054823

Double versiyonunu (tüm int giriş parametrelerinin double olduğu) yazmaya başladı, ancak bitirmedi, rafa koydu. Basit görünmek için çok basit bir iş değil. Daha doğrusu yazmak sorun değil, sorun çok kaliteli yazmak, yani hızlı bir algoritma var. Benim asıl sorunum Mükemmeliyetçilik.