Çift Arabelleğe Alınan Grafikler
Flicker, grafik programlama sırasında sık karşılaşılan bir sorundur. Birden çok karmaşık boyama işlemi gerektiren grafik işlemleri, işlenen görüntülerin titremesine veya aksi halde kabul edilemez bir görünüme sahip görünmesine neden olabilir. Bu sorunları gidermek için .NET Framework, çift arabelleğe alma erişimi sağlar.
Çift arabelleğe alma, birden çok boya işlemiyle ilişkili titreşim sorunlarını gidermek için bir bellek arabelleği kullanır. Çift tamponlama etkinleştirildiğinde, tüm boyama işlemleri önce ekrandaki çizim yüzeyi yerine bir bellek tamponuna işlenir. Tüm boya işlemleri tamamlandıktan sonra bellek arabelleği doğrudan kendisiyle ilişkilendirilmiş çizim yüzeyine kopyalanır. Ekranda yalnızca bir grafik işlemi gerçekleştirildiğinden, karmaşık boyama işlemleriyle ilişkili titreyen görüntü ortadan kalkar.
Varsayılan Çift AraBelleğe Alma
Uygulamalarınızda çift arabelleğe almayı kullanmanın en kolay yolu, .NET Framework tarafından sağlanan formlar ve denetimler için varsayılan çift arabelleğe almayı kullanmaktır.
DoubleBuffered özelliğini true
olarak ayarlayarak veya SetStyle yöntemini kullanarak Windows Forms ve oluşturduğunuz Windows denetimleri için varsayılan çift arabelleğe almayı etkinleştirebilirsiniz. Daha fazla bilgi için bkz. Formlar ve Denetimlerde Çift Ara Bellek Kullanarak Grafik Titreşimini Azaltma Yöntemi.
Arabelleğe Alınan Grafikleri El ile Yönetme
Animasyon veya gelişmiş bellek yönetimi gibi daha gelişmiş çift arabelleğe alma senaryoları için kendi çift arabelleğe alma mantığınızı uygulamak için .NET Framework sınıflarını kullanabilirsiniz. Tek tek grafik arabelleklerini ayırma ve yönetmeden sorumlu sınıf, BufferedGraphicsContext sınıfıdır. Her uygulama etki alanının, bu uygulama için varsayılan çift arabelleğin tümünü yöneten kendi varsayılan BufferedGraphicsContext örneği vardır. Çoğu durumda uygulama başına yalnızca bir uygulama etki alanı vardır, bu nedenle genellikle uygulama başına bir varsayılan BufferedGraphicsContext vardır. Varsayılan BufferedGraphicsContext örnekleri BufferedGraphicsManager sınıfı tarafından yönetilir. Currentçağırarak varsayılan BufferedGraphicsContext örneğine başvuru alabilirsiniz. Ayrıca, grafik açısından yoğun uygulamalar için performansı geliştirebilecek ayrılmış bir BufferedGraphicsContext örneği de oluşturabilirsiniz. BufferedGraphicsContext örneği oluşturma hakkında bilgi için bkz. El İle Arabelleğe Alınan Grafikleri Yönetme Kılavuzu.
Arabelleğe Alınan Grafikleri El ile Görüntüleme
Grafik arabellekleri oluşturmak için, BufferedGraphicsContext.Allocate'i çağırarak BufferedGraphics sınıfının bir örneğini döndüren BufferedGraphicsContext sınıfının bir örneğini kullanabilirsiniz. BufferedGraphics nesnesi, form veya denetim gibi işleme yüzeyiyle ilişkili bir bellek arabelleği yönetir.
Başlatıldıktan sonra BufferedGraphics sınıfı, bellek içi grafik arabelleğine gösterim işlemlerini yönetir. Graphicsaracılığıyla, bellek arabelleğini doğrudan temsil eden bir Graphics nesnesini ortaya çıkararak, grafikleri bellek arabelleğine işleyebilirsiniz. Bu Graphics nesnesini, çizim yüzeyini temsil eden bir Graphics nesnesine yaptığınız gibi boyayabilirsiniz. Tüm grafikler arabelleğe çizildikten sonra, arabellek içeriğini ekrandaki çizim yüzeyine kopyalamak için BufferedGraphics.Render kullanabilirsiniz.
BufferedGraphics sınıfını kullanma hakkında daha fazla bilgi için bkz. Arabelleğe Alınan Grafikleri El ile İşleme. Grafikleri işleme hakkında daha fazla bilgi için bkz. Windows Forms'da Grafik ve Çizim
Ayrıca bkz.
.NET Desktop feedback