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

 

Bu arada, insanlar uzun zaman önce meşgul olduklarından:

bu, bir GUI istemci-sunucu arabirimi olan yandex'ten ve hatta ağ üzerinden rastgele alınan bir ekran görüntüsüdür. Tekerleği yeniden icat etmeye gerek yok...

(ticari saniye) Pi gerçekten harika. Dürüst wolfram orada yaşıyor :-)

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

Evet, asıl sorun bu! Aynı market dll kullanımını yasaklıyor, bu yüzden tekerleği yeniden icat etmeniz gerekiyor. Biri GUI'lerin gerekli olmadığını düşünürse, ancak her durumda, tek bir iş parçacığında karmaşık uzun vadeli hesaplamalar yapamazsınız, her şey askıda kalır! Yani piyasada yasak olan dll'de bu işlem yapılmalı...

Vb. Bu nedenle her şeyin mql yöntemleri kullanılarak çizilmesi ve çözülmesi gerekir.

Aslında, GUI'yi ve mantığı iş parçacıklarına bölmek için, elbette, şimdi zaten yapabilirsiniz. Adamlar paralellik konusunu zaten tartıştılar https://www.mql5.com/en/forum/288985/page5#comment_14722396.

Sonuç olarak, Windows'ta olduğu gibi formun kendisini ana iş parçacığında bırakabilir ve ek hesaplamaları "arka plan" yürütmesine aktarabilirsiniz. Windows, Linux ve Android böyle çalışır.

Evet, anlama arzusunun bile olmadığı, kendi yolunda bir sürü kodlu başka bir koltuk değneği olan bu makaleyi gördüm.
Dll'de her şey çok daha hızlı ve daha kolay olduğunda.
Bu arada mql Socket ve WebRequest'i de reddettim, çünkü mql sunucusu kullanılamadığında, bağlantının kopması nedeniyle,
daha sonra soket veya web isteği işlevlerinin yürütülmesi engellenir, bu nedenle mql soketleri ve web istekleri üzerinde uygulamalar oluşturmaya karar verirseniz bunu aklınızda bulundurun.

 
Maxim Kuznetsov :

Bu arada, insanlar uzun zaman önce meşgul olduklarından:

bu, bir GUI istemci-sunucu arabirimi olan yandex'ten ve hatta ağ üzerinden rastgele alınan bir ekran görüntüsüdür. Tekerleği yeniden icat etmeye gerek yok...

(ticari saniye) Pi gerçekten harika. Dürüst wolfram orada yaşıyor :-)

Bu arada, ekran görüntüsündeki Scratch yaklaşık olarak Konov'un yapmak istediği şey, algoritmayı küplerden topluyoruz.

 
Maxim Kuznetsov :

ama bu karınca yuvasında en önemli olan microsoft olduğu için :-)

Windows'u güncellerken ve korsan Windows'ta ürünleri etkinleştirirken insanların neden oturum açma bilgilerini kaybettiğini düşünüyorsunuz?

Microsoft ve dll imzalama anahtarlarının bununla ne ilgisi var? Hangi yalnızca geliştiriciyi tanımlar.
Dll'yi imzalamak için anahtarlar, piyasada tam tanımlamayı geçenlere MQ tarafından verilebilir.
Bu anahtarla geliştirici, dll'yi kimin yazdığını belirlemek için dll'sini imzalar.
Yani dll imzalama anahtarı ürün aktivasyonunu etkilemez.

 
Maxim Kuznetsov :

///

MKL'de normal bir GUI olmadığını anlayabiliyor musunuz? Olan - bu 95. yıl. Utanç verici olmalı ... Ve siz, üçüncü taraf bir GUI'ye yapılan çağrılarla, onu MT'de nasıl kullandıklarını düşündünüz mü? Nasıl bağlanır? Yoksa bal yedirmeyin, sıradan bir şey söyleyeyim mi?))

 
Реter Konow :

MKL'de normal bir GUI olmadığını anlayabiliyor musunuz? Olan - bu 95. yıl. Utanç verici olmalı ... Ve siz, üçüncü taraf bir GUI'ye yapılan çağrılarla, onu MT'de nasıl kullandıklarını düşündünüz mü? Nasıl bağlanır? Yoksa bal yedirmeyin, sıradan bir şey söyleyeyim mi?))

Peter, muhtemelen sana gözlerimi açıp Maxim için söyleyeceğim: Maxim bu konuya herkesten daha aşinadır ve bir buçuk yıl önce GUI'nin kendi versiyonunu ortaya koydu. herkesin görmesi için işaretlemenin temeli. Ayrıca, GUI dış ortamda inşa edildi, ancak programla (gösterge, uzman) tam etkileşime sahipti.

Maxim, senin yerine cevap verdiğim için üzgünüm.

konuya dönmek istiyorum. Standart kütüphanenin çalışmasıyla ilgili bir makaleden bir resim çıkardım:


Bu ekran basitleştirilmiş bir biçimde diyaloğun kompozisyonunu gösterir.

Bu versiyonda, Border ana unsurdur, çizelgede bir tuval nesnesi oluşturur ve tüm astlar bunun üzerine çizim yapar. Aksine, itaate bağlı olarak çizerler.

Kapat düğmesi Altyazı üzerine çizilir, ardından Altyazı Kenarlık üzerine çizilir ve işte tüm çizilen öğelerle birlikte tuval üzerine çizilir.

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

Peter, muhtemelen sana gözlerimi açıp Maxim için söyleyeceğim: Maxim bu konuya herkesten daha aşinadır ve bir buçuk yıl önce GUI'nin kendi versiyonunu ortaya koydu. herkesin görmesi için işaretlemenin temeli. Ayrıca, GUI dış ortamda inşa edildi, ancak programla (gösterge, uzman) tam etkileşime sahipti.

Maxim, senin yerine cevap verdiğim için üzgünüm.

konuya dönmek istiyorum. Standart kütüphanenin çalışmasıyla ilgili bir makaleden bir resim çıkardım:


Bu ekran basitleştirilmiş bir biçimde diyaloğun kompozisyonunu gösterir.

Bu versiyonda, Border ana unsurdur, çizelgede bir tuval nesnesi oluşturur ve tüm astlar bunun üzerine çizim yapar. Aksine, itaate bağlı olarak çizerler.

Kapat düğmesi Altyazı üzerine çizilir, ardından Altyazı Kenarlık üzerine çizilir ve işte tüm çizilen öğelerle birlikte tuval üzerine çizilir.

GUI'de ne yazdığı ve ne yaptığı önemli bilmiyorum ama benim konularımda tek bir teknik öneride bulunmadı, tek bir çözüm üretmedi ve konuyla ilgili herhangi bir tartışmaya da öncülük etmedi. Yalnızca boş trolleme, üçüncü taraf çözümlerine işaret etme ve tekerleği yeniden icat etmeme çağrıları.

Konuya geri dönelim.

Standart kitaplığa aşina olduğum kadarıyla (aslında çok az), orada öğeler ve pencereler MT nesnelerinden oluşur. Yani bizim bağlamımızda tuval üzerine çizilmiyorlar. Elbette çizilirler, ancak tuvalimizde değil, bu da bize piksel renklerini kontrol etme, yüzey gradyanları oluşturma ve çok daha fazlasını sağlamaz.

Teorik olarak, kütüphanenin yapısını alabilir, kopyalayabilir ve tuval üzerine bir analog yapabilirsiniz. Teoride...

Sorun, Ccanvas'ın kendisinin üzerinde bir GUI oluşturmak için uygun olmamasıdır. Niye ya? Çünkü orada tuval sistemi temel olarak grafik ilkellere uyarlanmıştır. Yani aslında bu sınıf ilkellerden başka bir şey sağlamaz. GUI mimarisinin kendiniz inşa edilmesi gerekiyor. Ve bu durumda, sınıf isteğe bağlıdır. Kendi kararlarını vermek daha iyidir. Sonuçta, bu sınıf olmadan dikdörtgen bir etiket çizebilirsiniz. Bir tuval nasıl oluşturulur veya yüklenir. Çok basit. Bu nedenle, çözümümü tercih ettim.

Ancak, herhangi bir şekilde CCanvas'ı olmayan birine. Bu nedenle ısrar etmiyorum.

 
Реter Konow :

GUI'de ne yazdığı ve ne yaptığı önemli bilmiyorum ama benim konularımda tek bir teknik öneride bulunmadı, tek bir çözüm üretmedi ve konuyla ilgili herhangi bir tartışmaya da öncülük etmedi. Yalnızca boş trolleme, üçüncü taraf çözümlerine işaret etme ve tekerleği yeniden icat etmeme çağrıları.

Konuya geri dönelim.

Standart kitaplığa aşina olduğum kadarıyla (aslında çok az), orada öğeler ve pencereler MT nesnelerinden oluşur. Yani bizim bağlamımızda tuval üzerine çizilmiyorlar. Elbette çizilirler, ancak tuvalimizde değil, bu da bize piksel renklerini kontrol etme, yüzey gradyanları oluşturma ve çok daha fazlasını sağlamaz.

Teorik olarak, kütüphanenin yapısını alabilir, kopyalayabilir ve tuval üzerine bir analog yapabilirsiniz. Teoride...

Sorun, Ccanvas'ın kendisinin üzerinde bir GUI oluşturmak için uygun olmamasıdır. Niye ya? Çünkü orada tuval sistemi temel olarak grafik ilkellere uyarlanmıştır. Yani aslında bu sınıf ilkellerden başka bir şey sağlamaz. GUI mimarisinin kendiniz inşa edilmesi gerekiyor. Ve bu durumda, sınıf isteğe bağlıdır. Kendi kararlarını vermek daha iyidir. Sonuçta, bu sınıf olmadan dikdörtgen bir etiket çizebilirsiniz. Bir tuval nasıl oluşturulur veya yüklenir. Çok basit. Bu nedenle, çözümümü tercih ettim.

Ancak, herhangi bir şekilde CCanvas'ı olmayan birine. Bu nedenle ısrar etmiyorum.

Durmak! Peter (doğru mu?), birbirimizi anlamak için bazı kuralları kabul edelim. Kural 1: Canvas'ı CCanvas sınıfı değil, sadece ekranın bir bölümünü veya özellikle bir kaynağı çizmek için bir tuval olarak adlandıracağız. CCanvas sınıfının tüm bunlarla hiçbir ilgisi yok ve üzerinde hiç durmayacağız. Sadece aynı tuval üzerine çizim yapmak için işlevler sağlar ve hepsi bu kadar! Aslında, çeşitli şekillerde çizebiliriz.

"Çizim" kelimesiyle, bir kaynağın oluşturulduğu ve daha sonra grafiğe yerleştirilen bir piksel dizisinin oluşumunu kastediyoruz.

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

Durmak! Peter (doğru mu?), birbirimizi anlamak için bazı kuralları kabul edelim. Kural 1: Canvas'ı CCanvas sınıfı değil, sadece ekranın bir bölümünü veya özellikle bir kaynağı çizmek için bir tuval olarak adlandıracağız. CCanvas sınıfının tüm bunlarla hiçbir ilgisi yok ve üzerinde hiç durmayacağız. Sadece aynı tuval üzerine çizim yapmak için işlevler sağlar ve hepsi bu kadar! Aslında, çeşitli şekillerde çizebiliriz.

"Çizim" kelimesiyle, bir kaynağın oluşturulduğu ve daha sonra grafiğe yerleştirilen bir piksel dizisinin oluşumunu kastediyoruz.

Pekala.

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

Peter, muhtemelen sana gözlerimi açıp Maxim için söyleyeceğim: Maxim bu konuya herkesten daha aşinadır ve bir buçuk yıl önce GUI'nin kendi versiyonunu ortaya koydu. herkesin görmesi için işaretlemenin temeli. Ayrıca, GUI dış ortamda inşa edildi, ancak programla (gösterge, uzman) tam etkileşime sahipti.

Maxim, senin yerine cevap verdiğim için üzgünüm.

konuya dönmek istiyorum. Standart kütüphanenin çalışmasıyla ilgili bir makaleden bir resim çıkardım:


Bu ekran basitleştirilmiş bir biçimde diyaloğun kompozisyonunu gösterir.

Bu versiyonda, Border ana unsurdur, çizelgede bir tuval nesnesi oluşturur ve tüm astlar bunun üzerine çizim yapar. Aksine, itaate bağlı olarak çizerler.

Kapat düğmesi Altyazı üzerine çizilir, ardından Altyazı Kenarlık üzerine çizilir ve işte tüm çizilen öğelerle birlikte tuval üzerine çizilir.

biraz farklı tabii :-)

Python/Ruby/etc'de GUI olarak paylaşılan Tk grafiklerine sahip bir Tcl DLL'sine (bir Araç Ortak Dili olan) bir arayüz gönderdim.

GUI elde etmek amaç değildi, bu bir tür güzel yan etki :-)

tcl.Eval("button .pressme -text {Hello Peter}; pack .pressme") ;

bence uygun ve en önemlisi kısa :-)

Kimseyi kışkırtmıyorum - tcl / tk biliyorum, kullanıyorum, en iyi uygulamalarımı paylaştım (bkz. sourceforge atcl)