如何:手动管理缓冲图形
更新:2007 年 11 月
对于更高级的双缓冲情形,可以使用 .NET Framework 类实现自己的双缓冲逻辑。负责单独分配和管理图形缓冲区的类是 BufferedGraphicsContext 类。每个应用程序都有自己的默认 BufferedGraphicsContext 来管理此应用程序的所有默认双缓冲。提供调用 Current 可以检索对此实例的引用。
获得对默认 BufferedGraphicsContext 的引用
设置 Current 属性,如下面的代码示例所示。
Dim myContext As BufferedGraphicsContext myContext = BufferedGraphicsManager.Current
BufferedGraphicsContext myContext; myContext = BufferedGraphicsManager.Current;
说明: 对于从 BufferedGraphicsManager 类获得的 BufferedGraphicsContext 引用,不需要调用 Dispose 方法。BufferedGraphicsManager 负责处理默认 BufferedGraphicsContext 实例的所有内存分配和分发。
对于图形密集型应用程序(如动画),有时可通过使用专用的 BufferedGraphicsContext(而不是 BufferedGraphicsManager 提供的 BufferedGraphicsContext)来提高性能。这样,您可以单独创建并管理图形缓冲区,尽管该应用程序会占用更多内存,但可以避免因管理其他所有与应用程序关联的缓冲图形而导致的性能开销。
创建专用的 BufferedGraphicsContext
声明并创建 BufferedGraphicsContext 类的新实例,如下面的代码示例所示。
Dim myContext As BufferedGraphicsContext myContext = New BufferedGraphicsContext ' Insert code to create graphics here. ' On a nondefault BufferedGraphicsContext instance, you should always ' call Dispose when finished. myContext.Dispose()
BufferedGraphicsContext myContext; myContext = new BufferedGraphicsContext(); // Insert code to create graphics here. // On a non-default BufferedGraphicsContext instance, you should always // call Dispose when finished. myContext.Dispose();