Share via


İki Kez 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 arabelleğe alma etkinleştirildiğinde, tüm boyama işlemleri önce ekrandaki çizim yüzeyi yerine bir bellek arabelleğine 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ği kullanmaktır. Özelliğini true veya yöntemini kullanarak SetStyle Windows Forms ve yazılan Windows denetimleriniz DoubleBuffered için varsayılan çift arabelleği etkinleştirebilirsiniz. Daha fazla bilgi için bkz . How to: Reduce Graphics Flicker with Double Buffering for Forms and Controls.

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 sınıfıdır BufferedGraphicsContext . Her uygulama etki alanının, bu uygulama için varsayılan çift arabelleğin tümünü yöneten kendi BufferedGraphicsContext varsayılan ö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 örnekler sınıfı tarafından BufferedGraphicsManager yönetilir. öğesini çağırarak Currentvarsayılan BufferedGraphicsContext örneğe başvuru alabilirsiniz. Grafik açısından yoğun uygulamalar için performansı geliştirebilen ayrılmış BufferedGraphicsContext bir örnek de oluşturabilirsiniz. Örnek oluşturma BufferedGraphicsContext hakkında bilgi için bkz . Nasıl yapılır: Arabelleğe Alınan Grafikleri El ile Yönetme.

Arabelleğe Alınan Grafikleri El ile Görüntüleme

sınıfının bir örneğini kullanarak sınıfının bir örneğini BufferedGraphicsContextBufferedGraphics döndüren öğesini çağırarak BufferedGraphicsContext.Allocategrafik arabellekleri oluşturabilirsiniz. Nesne BufferedGraphics , form veya denetim gibi bir işleme yüzeyiyle ilişkili bir bellek arabelleği yönetir.

Örnekledikten sonra sınıf, BufferedGraphics bellek içi grafik arabelleğine işlemeyi yönetir. aracılığıyla bellek arabelleğine grafik işleyebilir ve bu da bellek arabelleğinin Graphicsdoğrudan temsil ettiği bir Graphics nesneyi kullanıma sunar. Bu Graphics nesneyi tıpkı çizim yüzeyini temsil eden bir Graphics nesneye yaptığınız gibi boyayabilirsiniz. Tüm grafikler arabelleğe çizildikten sonra, arabellek içeriğini ekrandaki çizim yüzeyine kopyalamak için kullanabilirsiniz BufferedGraphics.Render .

sınıfını BufferedGraphics 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 Grafikler ve Çizim

Ayrıca bkz.