İki Kez Arabelleğe Alınan Grafikler
Titreşim, grafikler programlamada yaygın bir sorundur. Birden çok karmaşık boyama işlemi gerektiren grafik işlemleri, işlenen görüntülerin titreşimsiz görünmesine veya başka bir şekilde kabul edilemez bir görünüme sahip olmasına neden olabilir. bu sorunları gidermek için .NET Framework çift arabelleğe alma erişimi sağlar.
Çift arabelleğe alma, birden çok boyama 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, ekranda çizim yüzeyi yerine öncelikle bir bellek arabelleğine işlenir. Tüm boyama işlemleri tamamlandıktan sonra, bellek arabelleği doğrudan onunla ilişkili çizim yüzeyine kopyalanır. Ekranda yalnızca bir grafik işlemi gerçekleştirildiğinden, karmaşık boyama işlemleriyle ilişkili görüntü titreşmesini ortadan kaldırmıştır.
Varsayılan çift arabelleğe alma
Uygulamalarınızda çift arabelleğe alma kullanmanın en kolay yolu, .NET Framework tarafından sunulan formlar ve denetimler için varsayılan çift arabelleğe almayı kullanmaktır. DoubleBufferedözelliği olarak true veya yöntemini kullanarak, Windows Forms için varsayılan çift arabelleğe almayı etkinleştirebilir ve Windows denetimleri yazabilirsiniz SetStyle . Daha fazla bilgi için bkz. nasıl yapılır: formlar ve denetimler Için çift arabelleğe alma Ile grafik titreşimini azaltma.
Arabellekli grafikleri el ile yönetme
animasyon veya gelişmiş bellek yönetimi gibi daha gelişmiş çift arabelleğe alma senaryolarında, kendi çift arabelleğe alma mantığınızı uygulamak için .NET Framework sınıflarını kullanabilirsiniz. Tek grafik arabelleklerinin dağıtılmasından ve yönetiminden sorumlu sınıf, BufferedGraphicsContext sınıftır. Her uygulama etki alanının, BufferedGraphicsContext Bu uygulama için varsayılan iki arabelleğe alma işleminin tümünü yöneten kendi varsayılan örneği vardır. Çoğu durumda, uygulama başına yalnızca bir uygulama etki alanı olacaktır, bu nedenle uygulama başına genellikle bir varsayılan olur BufferedGraphicsContext . Varsayılan BufferedGraphicsContext örnekler sınıfı tarafından yönetilir BufferedGraphicsManager . ' İ çağırarak varsayılan örneğe bir başvuru alabilirsiniz BufferedGraphicsContextCurrent . Ayrıca BufferedGraphicsContext , grafiksel olarak yoğun uygulamalar için performansı iyileştirebilecek özel bir örnek de oluşturabilirsiniz. Örnek oluşturma hakkında daha fazla bilgi için BufferedGraphicsContext bkz. BufferedGraphicsContext.
Arabellekli grafikleri el ile görüntüleme
Sınıfının bir BufferedGraphicsContext örneğini döndüren öğesini çağırarak grafik arabellekleri oluşturmak için sınıfının bir örneğini kullanabilirsiniz BufferedGraphicsContext.AllocateBufferedGraphics . Bir BufferedGraphics nesne, bir form veya denetim gibi bir işleme yüzeyi ile ilişkili bir bellek arabelleğini yönetir.
Sınıf, oluşturulduktan sonra, BufferedGraphics bir bellek içi grafik arabelleğine işlemeyi yönetir. Bellek arabelleğini Graphics doğrudan temsil eden bir nesneyi kullanıma sunan aracılığıyla bellek arabelleğine grafik işleyebilirsiniz Graphics . GraphicsÇizim yüzeyini temsil eden bir nesneye tıpkı yaptığınız gibi, bu nesneye de boyayabilirsiniz Graphics . Tüm grafikler arabelleğe çizildikten sonra, BufferedGraphics.Render arabelleği içeriğini ekranda çizim yüzeyine kopyalamak için kullanabilirsiniz.
Sınıfını kullanma hakkında daha fazla bilgi için BufferedGraphics bkz. BufferedGraphics. grafik işleme hakkında daha fazla bilgi için bkz. Windows Forms grafik ve çizim
Ayrıca bkz.
- BufferedGraphics
- BufferedGraphicsContext
- BufferedGraphicsManager
- Nasıl yapılır: Arabelleğe Alınan Grafikleri Elle İşleme
- Nasıl yapılır: Formlar ve Denetimler için İki Kez Arabelleğe Alma ile Grafik Titreşimini Azaltma
- Nasıl yapılır: Arabelleğe Alınan Grafikleri Elle Yönetme
- Windows Formlarında Grafikler ve Çizim