Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
Tuval, bir piksel dizisinin bağlı olduğu bir nesnedir. Kaynak, bu piksel dizisini bağlamaktan sorumludur (bkz. bool CCanvas::Create())
Bir tuvali her zaman silmek ve yeniden oluşturmak kötü bir uygulamadır.
Bir tuvali ihtiyaç duyulduğunda oluşturmak ve artık ihtiyaç duyulmadığında, örneğin programın sonunda silmek iyi bir uygulamadır.
Bir tuval nesnesi oluşturduktan sonra onu temizleyebilir, her karede piksel dizisinin üzerine yazabilir, tuvali yeniden boyutlandırabilir ve istediğiniz yere taşıyabilirsiniz.
Teşekkürler, biraz daha netleşti ama hepsi değil. Bir canvas nesnesi oluşturduktan sonra, ObjectDelete() kullanarak nesneyi grafikten silersem, bu nesneye bağlı piksel dizisine dokunulmadan kaldığını ve ... doğru anlıyor muyum? Farklı bir adla tekrar yeni bir canvas nesnesi oluşturduğumda, bellekte yeni bir piksel dizisi oluşturulur ve böylece teorik olarak tüm belleği doldurmak mümkün olur mu?
Yoksa eski piksel dizisi her seferinde son oluşturulan canvas nesnesine yeniden mi bağlanıyor (çünkü canvas sınıfının kullanılan örneğinin tüm fonksiyonları sadece onunla çalışmaya başlıyor)?
Teşekkürler, biraz daha netleşti ama hepsi değil. Bir canvas nesnesi oluşturduktan sonra ObjectDelete() kullanarak nesneyi grafikten silersem, bu nesneye bağlı piksel dizisinin dokunulmadan kaldığını ve.... doğru anlıyor muyum? Farklı bir adla tekrar yeni bir canvas nesnesi oluşturduğumda, bellekte yeni bir piksel dizisi oluşturulur ve böylece teorik olarak tüm belleği doldurmak mümkün olur mu?
Tabii ki, sahipsiz kaynaklar çoğalacaktır.
Ya da eski piksel dizisi her seferinde son oluşturulan kanvas nesnesine yeniden bağlanır (çünkü kanvas sınıfının kullanılan örneğinin tüm işlevleri çalışmaya başlar)
Hayal gücünüz muhteşem. Sizi kıskanıyorum. Böyle bir şey aklıma gelmezdi. :))
Ancak, sahipsiz bir kaynağın adını kaydederseniz, onu yeni bir bitmap nesnesine yeniden bağlayabilirsiniz. Ama bu şizofreni alanından.
Ancak, sahipsiz bir kaynağın adını kaydederseniz, onu yeni bir bitmap nesnesine yeniden bağlayabilirsiniz. Ama bu şizofreni alanından.
Sözümü geri alıyorum. Sanırım bunun yararlı olabileceği bir durum buldum.
Teşekkürler, sadece Destroy () yerine ObjectDelete() kullanırsanız bellekte ne olacağını anlamak istedim. Ve böyle bir durumda grafik kaynaklarının (sahipsiz piksel dizileri ve diğer her şey) yeni bir tuval nesnesi için her seferinde yeni bir ad oluşturulursa çoğalacağını fark ettim.
Ve eğerObjectDelete() kullanırsam ,ama sonra aynı isimde bir canvas nesnesi yaratırsam, piksel dizisi eski mi yoksa hala yeni mi olacak?
p.s. sorular muhtemelen aptalca, ama canvas mekanizmasını anlamak için buna ihtiyacım var
.
Teşekkürler, sadece Destroy () yerine ObjectDelete() kullanırsanız bellekte ne olacağını anlamak istedim. Ve her seferinde yeni bir canvas nesnesi için yeni bir isim oluşturulursa grafik kaynaklarının (sahipsiz piksel dizileri ve başka bir şey) çoğalacağını fark ettim.
Basit bir komut dosyası yazarak kontrol etmek kolaydır.
Nasıl yapacağımı söyleyebilir misiniz?
Nasıl olduğunu söyleyebilir misiniz?
Bunun gibi:
ve yoruma bakın:
!!! bu betiği çalıştırdıktan sonra, yetim kaynaklar için bellek boşaltmak üzere terminali yeniden yüklemeyi unutmayın.
Bunun gibi:
ve yoruma bak:
!!! Bu betiği çalıştırdıktan sonra, yetim kaynaklar için bellek boşaltmak üzere terminali yeniden yüklemeyi unutmayın.
Yardımınız için çok teşekkür ederim! Daha önce bellekle bu şekilde çalışmamıştım, test edeceğim.
Terminal yeniden yüklenirken yetim kaynakların silindiğine dair ipucu için teşekkürler! Bu tür birçok şey henüz benim için açık değil.
p.s. bu örnekteki her şey mükemmel! Bakılacak bir şey, düşünülecek bir şey ve deneme fırsatı var... Kod kısa.
Buna gerek yok. Canvas destructor'ında otomatik olarak çalıştırılır:
~iCanvas() { Destroy(); ChartRedraw();};