Canvas üzerinde bir kitle kaynaklı proje yapma - sayfa 31

 
Реter Konow :
Başka bir deyişle: sonunda, ben bir kısmı yapmama ve ikinci kısma sahip olmanıza rağmen, bir arayüze sahip bir danışmanınız olacak. İki parçayı tek bir Uzman Danışmanda birleştirmenin zararı olmaz.
Yine de, diğer tarafa gidebilirsiniz. Yapıcıyı yayınlayacağım ve yardımımla ihtiyacınız olan GUI'yi tasarlayacaksınız. Ardından, çekirdeği yazdırın, bir etkinleştirici tarafından danışmana bağlanan motora yerleştirin. Bu daha da iyidir, çünkü işaretleme dilinde grafikleri nasıl yazacağınızı hemen öğrenecek ve bunları kendiniz düzeltebileceksiniz.
 
Genel olarak, bunu yapacağız. Ben yapıcıyı yayınlayacağım ve size üzerinde gui tasarlamayı öğreteceğim. Henüz bir belge yok, bu yüzden ilgileniyorsanız öğreticiyi izleyin.

Eğitim aşağıdaki konuları içerecektir:

1. İşlevsel gui'nin oluşturulması.
2. Stiller yapmak.
3. Çekirdek dosyanın ve motorun yazdırılması ve uygulamaya bağlanması (çok basit - dahil olarak).
4. GUI öğelerini API işlevi aracılığıyla uygulamaya bağlama (API dosyası otomatik olarak oluşturulur).

Bu konudaki gönderiler için takipte kalın.
 
Реter Konow :
Genel olarak, bunu yapacağız. Ben yapıcıyı yayınlayacağım ve size üzerinde gui tasarlamayı öğreteceğim. Henüz bir belge yok, bu yüzden ilgileniyorsanız öğreticiyi izleyin.

Eğitim aşağıdaki konuları içerecektir:

1. İşlevsel gui'nin oluşturulması.
2. Stiller yapmak.
3. Çekirdek dosyanın ve motorun yazdırılması ve uygulamaya bağlanması (çok basit - dahil olarak).
4. GUI öğelerini API işlevi aracılığıyla uygulamaya bağlama (API dosyası otomatik olarak oluşturulur).

Bu konudaki gönderiler için takipte kalın.

Kabul edilmiş!

 
--- :

Video çekmedim ama örnek yüklüyorum. hızlı bir şekilde çizilir.

600 açılır liste var.

fareyi hareket ettirin - her olay ve renk değişikliği ile genel CCanvas yeniden çizilir. bu etkileşimi elde edin.

Son boyutu bitmap özelliklerinde görebilirsiniz - 1500x600 piksel (800x500 ve 250ms gecikmenizle karşılaştırma için). Bu 900.000 puana eşittir ve her şey anında yeniden çizilir. Herhangi bir saniyeden söz edilemez.

Her liste önce kendi tuvaline kendi boyutunda çizilir (sınırların dışına çıkmamak için) ve sonra sadece genel listeye geçer. Yani her fare olayı için 600 ResourceCreate çağrımız var.
Bu, tepki hızından da görebileceğiniz gibi, gösterilecek yeterli çerçeve ve çizgi film olduğu anlamına gelir.

MT geliştiricileri, frensiz tatmin edici bir araç verdi (ResourceCreate bitmap'lerinden bahsediyorum)

Bu örneği açık kaynakta görmek mümkün mü?

 
Алексей Барбашин :

Projenin kapalı moda geçmesi üzücü (

Evet, hiçbir yere gitmedi.

 
Алексей Барбашин :

Bu örneği açık kaynakta görmek mümkün mü?

Tuvalle çalışmanın neresini anlamıyorsun?

1. Diğer tüm grafik nesneler gibi olaylara tepki verir. Yani fare hareket ettikçe koordinatlarını takip edebilir, fare ve klavye olaylarına tepki verebilirsiniz.

2. Her pikselin rengini bağımsız olarak değiştirebilirsiniz.

Başka ne yapar? Ve sonra biraz beyne ve anlamsızca çok zaman harcama arzusuna ihtiyacın var.

 
Merhaba.
 
Dmitry Fedoseev :

Tuvalle çalışmanın neresini anlamıyorsun?

1. Diğer tüm grafik nesneler gibi olaylara tepki verir. Yani fare hareket ettikçe koordinatlarını takip edebilir, fare ve klavye olaylarına tepki verebilirsiniz.

2. Her pikselin rengini bağımsız olarak değiştirebilirsiniz.

Başka ne yapar? Ve sonra biraz beyne ve anlamsızca çok zaman harcama arzusuna ihtiyacın var.

Şey, tuvalin kendisi olaylara tepki vermiyor. Ve her pikseli değiştirebileceğiniz gerçeği zaten açık.

Parçalanmış tuval yeniden çiziminin uygulanmasıyla ilgileniyordum.

Ancak görünüşe göre, çoğu, üzerinde yalnızca küçük bir parçanın yeniden çizilmesi gerekse bile, yani bir kontrol olsa bile, tuvalin tamamen yeniden çizilmesine karar verdi.

 
Алексей Барбашин :

Şey, tuvalin kendisi olaylara tepki vermiyor. Ve her pikseli değiştirebileceğiniz gerçeği zaten açık.

Parçalanmış tuval yeniden çiziminin uygulanmasıyla ilgileniyordum.

Ancak görünüşe göre, çoğu, üzerinde yalnızca küçük bir parçanın yeniden çizilmesi gerekse bile, yani bir kontrol olsa bile, tuvalin tamamen yeniden çizilmesine karar verdi.

Tuval kendi başına olaylara tepki vermez, ancak kendi başına var olmaz.

Parçalı yeniden çizim - yapmaya başlamaya değer ve böyle bir hedef olup olmadığı netleşecek. Bir dizi kontrol olması gerektiğini düşünüyorum, her kontrolün sınırları tanımladı. Bazı kontrolleri yeniden çizmeniz gerektiğinde, tüm kontrolleri gözden geçirmeniz, hangilerinin hala bu alana düştüğünü görmeniz ve yalnızca onları yeniden çizmeniz gerekir. Yine de.

 
Dmitry Fedoseev :

Tuval kendi başına olaylara tepki vermez, ancak kendi başına var olmaz.

Parçalı yeniden çizim - yapmaya başlamaya değer ve böyle bir hedef olup olmadığı netleşecek. Bir dizi kontrol olması gerektiğini düşünüyorum, her kontrolün tanımlanmış sınırları var. Bazı kontrolleri yeniden çizmeniz gerektiğinde, tüm kontrolleri gözden geçirmeniz, hangilerinin hala bu alana düştüğünü görmeniz ve yalnızca onları yeniden çizmeniz gerekir. Yine de.

Aynen öyle kurdum. Prensip olarak, standart kitaplığı temel aldım, çünkü olay iletimi anları ve diğer bazı noktalar içinde çok iyi işlendi. Anatoly, her farklı öğe sınıfı için bir gruplama oluştururken, standart olanda her şey tek bir temel nesneye indirgenir.

Sonuç olarak, WndObject'in herhangi bir kontrolün en yaygın özelliklerinin (boyut, konum, arka plan rengi, kenarlık rengi, kenarlık kalınlığı, metin, resim vb.) tam bir açıklamasını içerdiğini elde ederiz. Ayrıca, aynı sınıf ebeveyn denetimine bir başvuru içerir. Yani, bir öğe için bir ebeveyn belirtilmemişse, grafik üzerinde kendi tuval nesnesini oluşturur, aksi takdirde üst tuval üzerine çizilir. Pozisyona bağlı olarak (bağımsız, ast), eleman konumunun koordinatları da hesaplanır. Ek olarak, aynı nesne, bu öğenin kapladığı ana alanın ilk açıklamasını içeren bir diziye sahiptir. Fikir şudur: eğer sadece elemanın kendisi değişirse, çizimden önce piksel alanı ebeveynin piksel matrisi ile doldurulur ve ancak o zaman kontrolün yeni durumu uygulanır. bu yaklaşımla, tüm tuvali her seferinde yeniden çizmek gerekli değildir, çünkü yeniden çizim, dizinin tüm öğelerinin bir geçişidir ve iç içe öğelerle yinelemeli olarak. Belirli bir kontrolü çizmek ve güncellemek için iki işlev varsayılır: biri, tüm kontrolü oluştururken öğeyi ebeveynin üstüne (veya boş bir tuval üzerine) çizer, ikincisi yalnızca verilen kontrolün görüntüsünü günceller. Bunun gibi bir şey.

Olay modelinde "kayıp" iken: hangi değişikliklerden sonra, hangi katmanların yeniden çizilmesi gerekir.

Nikolai örneklerinde prensipte yerel alan verilerini depolamakla uğraşmamanız gerektiğini gösteriyor, çünkü tüm tuvali yeniden çizmek o kadar hızlı çalışıyor ki aşağılara ve ayrıntılara gerek yok, her zaman her şeyi bir kerede yeniden çizmek yeterli.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.