Tuval harika! - sayfa 31

 
Nikolai Semko :

Teşekkürler Andrey :)

Andrey, "videoya kaydedebilir miyim?" sorunuza mantıklı gerekçemi açıklayacağım.
Herhangi bir soruyu cevaplamadan önce, mevcut araçlarla soruyu kimin sorduğunu ve seviyesini anlamaya çalışırım. Birincisi, cevabınızı daha doğru ve net bir şekilde oluşturmak ve ikincisi, bir soruya soru ile cevap vermemek için çok bulanık bir sorunun anlamını anlamak için.
Tabii ki profiline girdim.
  • Orada 162 diyelim ve 2-5 aydır forumda bir reyting görsem o zaman soruyu acemi birinin sorduğunu anlardım.
Ve basitçe şöyle cevap verirdim: "Şu anda MT5'te video kaydetme uygulanmıyor, ancak dilerseniz her şey yapılabilir."
  • Ama forumda isminizin sık sık denk geldiğini hatırlıyorum ve profilinizden 10 yılı aşkın süredir forumda olan, benden 5 kat fazla tecrübeli bir programcı ile uğraştığımı fark ettim. mesaj sayısı ve cephaneliğinde en az bir makale, 5 tamamlanmış eser ve KB cinsinden üç kod ve reyting benimkinin 2 katından fazla.
Bu yüzden, MT5'in yetenekleri konusunda çok bilgili olduğunuzu ve belgeleri benim kadar iyi bildiğinizi düşündüm ve sorunuzun potansiyel bir video kaydetme olasılığı hakkında olduğu sonucuna vardım ve bence ilgileniyorsunuz çünkü. Canvas'ta biraz beceriksizim.
Bu nedenle size potansiyel bir fırsat formatında cevap vermeye başladım.
  • Yoksa başka bir akıllı adam ve "Süpürgeleriniz uçabilir" gibi şakalar yapmayı seven biri misiniz?

Ancak karalamacılar beni özellikle endişelendirmiyor, çünkü bir kural olarak, kendilerini çok akıllı olarak gören insanlar, ama aslında çok aptal ve beceriksizler, onlara karşı, kural olarak, psikolojikten oldukça kolay bir hile var. aikido ve genel kahkahalara çarpıyorlar.


Tehdit Ay hakkında, HAYIR cevabın beni gülümsetti. Bilin - bu sizin doğru cevabınız. Yine böyle bir soruya "yanlış" cevabım, bu soruyu bana kimin sorduğuna bağlı olarak farklı olacaktır.



Çok ve çok uzun süre felsefe yapabilirsiniz, ancak bu sorunun anlamı yüzeydeydi ve hemen, açık ve net bir şekilde açıktı. Ve bu soruya cevaben, ekrandan video kaydı ile ilgili bir şey taşımak ... bu bir şey)) eğer seviyeleri çok düşünmeyi seviyorsanız. Ve MT5 belgelerinin bununla ne ilgisi var?

 
Dmitry Fedoseev :

Ve biliyorsunuz, burada yüz yıl önce Zorro, animasyonlu bir gif'in yeniden üretimini tuval aracılığıyla gösterdi. Anlaşılmaz bir döngüsel video dizisi değil, sıradan bir animasyonlu gif.

Bilmiyordum. Bunu yapmak için GIF formatını anlamanız, parçalara ayırmanız ve çerçeveler oluşturmanız gerekir. Çok zor olduğunu düşünmüyorum. Ancak daha sonra kolaydır ve formatı anlarsanız standart bükümleri kaydedebilirsiniz.
 
Nikolai Semko :
Bilmiyordum. Bunu yapmak için GIF formatını anlamanız, parçalara ayırmanız ve çerçeveler oluşturmanız gerekir. Çok zor olduğunu düşünmüyorum. Ancak daha sonra kolaydır ve formatı anlarsanız standart bükümleri kaydedebilirsiniz.

Sıkıştırma olmadan avi kadar kolay. Ve bu ve bu zor değil, sadece nasıl olduğunu bilmeniz gerekiyor, ama şimdiye kadar kimse bilmiyor. Bir gif ile çözme şansı daha fazla gibi görünüyor.

Bu tavsiyeye dikkat etmek daha iyidir. Çünkü sıkıştırma olmadan nasıl video oluşturacağınızı çözseniz bile fazla ileri gitmeyeceksiniz, dosya boyutları çok büyük olacaktır.

 
Nikolai Semko :
Neden böyle karar verdin?

cevaba göre.

 
Bir videoyu düşündüğümde, sıkıştırma algoritmasını düşünüyorum, yani. kodekler hakkında, aksi takdirde çocuk oyuncaklarıdır
 

Başka bir seçenek daha var ve belki de en ilginç ve faydalı olacak. API kazanın: AVIFileOpen(), AVIFileCreateStream() vb.

 
Nikolai Semko :

Dinamik zaman çerçevesi ile ilk deneyler.

EURUSD'nin tüm geçmişini dinamik olarak eşleştirin:

.

Fraktalite vardır.

normlar

pencereyi ve ölçeği seçmek için alt ray gereklidir


 
Nikolai Semko :

Teşekkürler Andrey :)

Andrey, "videoya kaydedebilir miyim?" sorunuza mantıklı gerekçemi açıklayacağım.
Herhangi bir soruyu cevaplamadan önce, mevcut araçlarla soruyu kimin sorduğunu ve seviyesini anlamaya çalışırım. Birincisi, cevabınızı daha doğru ve net bir şekilde oluşturmak ve ikincisi, bir soruya soru ile cevap vermemek için çok bulanık bir sorunun anlamını anlamak için.
Tabii ki profiline girdim.
  • Orada 162 diyelim ve 2-5 aydır forumda bir reyting görsem o zaman soruyu acemi birinin sorduğunu anlardım.
Ve basitçe şöyle cevap verirdim: "Şu anda MT5'te video kaydetme uygulanmıyor, ancak dilerseniz her şey yapılabilir."
  • Ama forumda isminizin sık sık denk geldiğini hatırlıyorum ve profilinizden 10 yılı aşkın süredir forumda olan, benden 5 kat fazla tecrübeli bir programcı ile uğraştığımı fark ettim. mesaj sayısı ve cephaneliğinde en az bir makale, 5 tamamlanmış eser ve KB cinsinden üç kod ve reyting benimkinin 2 katından fazla.
Bu yüzden, MT5'in yetenekleri konusunda çok bilgili olduğunuzu ve belgeleri benim kadar iyi bildiğinizi düşündüm ve sorunuzun potansiyel bir video kaydetme olasılığı hakkında olduğu sonucuna vardım ve bence ilgileniyorsunuz çünkü. Canvas'ta biraz beceriksizim.
Bu nedenle size potansiyel bir fırsat formatında cevap vermeye başladım.
  • Yoksa başka bir akıllı adam ve "Süpürgeleriniz uçabilir" gibi şakalar yapmayı seven biri misiniz?

Ancak karalamacılar beni özellikle endişelendirmiyor, çünkü bir kural olarak, kendilerini çok akıllı olarak gören insanlar, ama aslında çok aptal ve beceriksizler, onlara karşı, kural olarak, psikolojikten oldukça kolay bir hile var. aikido ve genel kahkahalara çarpıyorlar.


Tehdit Ay hakkında, HAYIR cevabın beni gülümsetti. Bilin - bu sizin doğru cevabınız. Yine böyle bir soruya "yanlış" cevabım, bu soruyu bana kimin sorduğuna bağlı olarak farklı olacaktır.



 
Nikolai Semko :

...
Çekimleri nasıl topluyorsunuz?
Kodu ME'den nasıl kaldırdığınızı anlamadım.
Sadece ekran görüntüleri aracılığıyla olsa bile, o zaman yine de iyi iş çıkardın, çünkü. paketlediklerini görüyorum.
Çalışmanız dikkati hak ediyor.

Tehdit Her ne kadar bir dal oluşturmuş olsam da ve bir şekilde tarihsel olarak daha çok benim önderlik ettiğim ortaya çıktı, tk. tuval benim için bir tür hobi ve rahatlama.
Ama burada bir usta gibi hissetmiyorum ve burada bir tür özel bölge var. Kapılar açık. Hepiniz hoşgeldiniz. Herkes hoş geldiniz. Ve hatta troller, çünkü bazen bir sürücü verirler. :)

Teşekkürler Nikolay.

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

Personel eğitimi:

1. Kareleri basit bir "FastStone" düzenleyicide toplayarak, istenen alanın ekran görüntülerini alıyorum veya Camtasia ile bir klip çekiyorum ve kareleri FastStone'a aktarıyorum.

2. Çerçeveleri işliyorum (gölgeler, oklar, metinler ekliyorum) ve bunları .bmp formatında Images \ MyGif klasörüne kaydediyorum (her gif'in kendi alt klasörü vardır).

3. Çerçeve adları "1.bmp", "2.bmp", "3.bmp" olmalıdır... GIF oluşturma komut dosyasının çalışması için bu gereklidir.

4. Komut dosyasını ME'de açıyorum ve tüm çerçeveleri #resource üzerinden entegre ediyorum.

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

Komut dosyası nasıl çalışır:

1. Komut dosyası çerçeveler arasında dolaşır ve bunları ReasourceReadImage aracılığıyla okur.

2. Komut dosyası aynı anda iki kare yükler - yeni ve önceki: 1 ve 2, sonra 2 ve 3, sonra 3 ve 4.... Ve yeni karedeki ve önceki karedeki piksellerin renklerini karşılaştırır. Renk değiştiyse, komut dosyası piksel numarasını ve yeni rengini bir diziye yazar. Böylece, yalnızca önceki kareden bu yana değişen pikseller ve renkler kaydedilir. Bir pikselin rengi ilk kareden sonra değişmezse, bu renge sahip piksel bir kez kaydedilir. Bu ilk sıkıştırma mekanizmasıdır.

3. İkinci sıkıştırma mekanizması: aynı renge sahip piksellere sahip satırlar kısaltılır. Bir piksel satırında pikselden piksele sürekli yinelenen bir renk varsa, komut dosyası bir tekrar sayma döngüsü başlatır ve başlangıç pikselinin sayısını (tekrar dizisinin başladığı, renk ve tekrar sayısı) yazar. dizi.

Böylece betik çerçeveleri sıkıştırır ve gif'i paketler. Döngülerin sonunda, toplanan dizi , yapıcının cybcode'u okuduktan sonra yüklediği gifa adlı bir dosyaya yazılır. Arayüzde istediğiniz kadar gif olabilir, ancak her gif elemanına atanır ve dizideki başlangıcı, grafik çekirdeğinde elemanın özelliklerine yazılır.

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

GIF oynatma mekanizması:

1. Her gif'in birkaç özelliği vardır: gif dizisinde başlama, kare sayısı, kare boyutu, kareler arasında duraklama.

2. Özel bir blok, çekirdek nesneleri arasında dolaşır ve GIF özelliğini arar. Blok şunları kontrol eder:

  • Öğede bir gif'in varlığı
  • Öğenin görünür veya gizli olup olmadığı
  • Öğe kapsam dahilinde mi?

Kontroller geçilirse, blok belirli bir gif adresindeki gif dizisine erişir, şunlara bakar:

  • çerçeve sayacı
  • duraklama süresi sayacı

Bu kontroller geçilirse, blok gifi okumaya devam eder:

1. Blok, üzerine gifin çizildiği tuvali yükler.

2. Blok, mevcut çerçeveyi okur ve paketini açar:

  • Sayılara göre gerekli pikselleri bulur ve genel tuvaldeki konumlarını hesaplar.
  • İstenen rengin piksellerini doğru konuma çizer.
  • Tek bir renkle bir piksel dizisini "açar".

Blok yalnızca çerçeveler arasında hareket ederek aralarındaki duraklamayı saymakla kalmaz, aynı zamanda farklı pencerelerdeki farklı öğelerin farklı gifleri aracılığıyla görünürlük bölgesinin arkasına veya kapalı pencerelere gizlenmiş olan gifleri atlar.

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

İşte böyle bir çalışma. Her şeyin basit olduğunu düşündüm, ama söylerken kendim karmaşıklıktan biraz "aptal" oldum :).

not. 800*600 görüntü boyutuna sahip bir GIF, 20 veya daha fazla kez sıkıştırılır. Her şeyi bir char dizisine yazabilseydim, sıkıştırma 4 kat daha artardı. Ancak bu kesinlikle renk paletinin fakirleşmesine yol açacaktır.
 
Ama "gif" bununla ne ilgisi var?
Neden: