如何:手動呈現已緩衝的圖形
如果您在管理自己的已緩衝圖形,將需要能夠建立及呈現圖形緩衝區。 您可以藉由呼叫類別 Allocate 方法,針對與螢幕上繪圖介面相關聯的 BufferedGraphics 類別建立其執行個體。 這個方法會建立與特定轉譯介面 (例如表單或控制項) 相關聯之 BufferedGraphics 的執行個體。 建立 BufferedGraphics 執行個體之後,您可以透過 Graphics 屬性,繪製圖形到它所代表的緩衝區。 在您執行所有圖形作業之後,可以藉由呼叫 Render 方法,將緩衝區的內容複製到螢幕上。
注意
如果您執行您自己的轉譯,將會增加記憶體耗用量,不過可能只會稍微增加。
手動顯示已緩衝的圖形
取得 BufferedGraphicsContext 類別執行個體的參考。 如需詳細資訊,請參閱如何:手動管理已緩衝的圖形。
藉由呼叫 Allocate 方法,建立 BufferedGraphics 類別的執行個體,如下列程式碼範例所示。
// This example assumes the existence of a form called Form1. BufferedGraphicsContext currentContext; BufferedGraphics myBuffer; // Gets a reference to the current BufferedGraphicsContext currentContext = BufferedGraphicsManager.Current; // Creates a BufferedGraphics instance associated with Form1, and with // dimensions the same size as the drawing surface of Form1. myBuffer = currentContext.Allocate(this.CreateGraphics(), this.DisplayRectangle);
' This example assumes the existence of a form called Form1. Dim currentContext As BufferedGraphicsContext Dim myBuffer As BufferedGraphics ' Gets a reference to the current BufferedGraphicsContext. currentContext = BufferedGraphicsManager.Current ' Creates a BufferedGraphics instance associated with Form1, and with ' dimensions the same size as the drawing surface of Form1. myBuffer = currentContext.Allocate(Me.CreateGraphics, _ Me.DisplayRectangle)
藉由設定 Graphics 屬性,繪製圖形至圖形緩衝區。 例如:
// Draws an ellipse to the graphics buffer. myBuffer.Graphics.DrawEllipse(Pens.Blue, this.DisplayRectangle);
' Draws an ellipse to the graphics buffer. myBuffer.Graphics.DrawEllipse(Pens.Blue, Me.DisplayRectangle)
當您完成對圖形緩衝區的所有繪圖作業時,請呼叫 Render 方法以轉譯緩衝區,不論是轉譯到與該緩衝區關聯的繪圖介面,或是指定的繪圖介面,如下列程式碼範例所示。
// This example assumes the existence of a BufferedGraphics instance // called myBuffer. // Renders the contents of the buffer to the drawing surface associated // with the buffer. myBuffer.Render(); // Renders the contents of the buffer to the specified drawing surface. myBuffer.Render(this.CreateGraphics());
' Renders the contents of the buffer to the drawing surface associated ' with the buffer. myBuffer.Render() ' Renders the contents of the buffer to the specified drawing surface. myBuffer.Render(Me.CreateGraphics)
完成轉譯圖形之後,請對 BufferedGraphics 執行個體呼叫
Dispose
方法以釋放系統資源。myBuffer.Dispose();
myBuffer.Dispose()