Condividi tramite


WriteableBitmap.AddDirtyRect(Int32Rect) Metodo

Definizione

Specifica l'area della bitmap che ha subito modifiche.

public:
 void AddDirtyRect(System::Windows::Int32Rect dirtyRect);
[System.Security.SecurityCritical]
public void AddDirtyRect (System.Windows.Int32Rect dirtyRect);
public void AddDirtyRect (System.Windows.Int32Rect dirtyRect);
[<System.Security.SecurityCritical>]
member this.AddDirtyRect : System.Windows.Int32Rect -> unit
member this.AddDirtyRect : System.Windows.Int32Rect -> unit
Public Sub AddDirtyRect (dirtyRect As Int32Rect)

Parametri

dirtyRect
Int32Rect

Un oggetto di tipo Int32Rect che rappresenta l’area che ha subito modifiche. Le dimensioni sono espresse in pixel.

Attributi

Eccezioni

La bitmap non è stata bloccata tramite una chiamata al metodo Lock() o TryLock(Duration).

dirtyRect non rientra nei limiti dell’oggetto WriteableBitmap.

Esempio

Nell'esempio di codice seguente viene illustrato come specificare l'area del buffer nascosto modificato tramite il AddDirtyRect metodo .

    // The DrawPixel method updates the WriteableBitmap by using
    // unsafe code to write a pixel into the back buffer.
    static void DrawPixel(MouseEventArgs e)
    {
        int column = (int)e.GetPosition(i).X;
        int row = (int)e.GetPosition(i).Y;

        try{
            // Reserve the back buffer for updates.
            writeableBitmap.Lock();

            unsafe
            {
                // Get a pointer to the back buffer.
                IntPtr pBackBuffer = writeableBitmap.BackBuffer;

                // Find the address of the pixel to draw.
                pBackBuffer += row * writeableBitmap.BackBufferStride;
                pBackBuffer += column * 4;

                // Compute the pixel's color.
                int color_data = 255 << 16; // R
                color_data |= 128 << 8;   // G
                color_data |= 255 << 0;   // B

                // Assign the color data to the pixel.
                *((int*) pBackBuffer) = color_data;
            }

            // Specify the area of the bitmap that changed.
            writeableBitmap.AddDirtyRect(new Int32Rect(column, row, 1, 1));
        }
        finally{
            // Release the back buffer and make it available for display.
            writeableBitmap.Unlock();
        }
    }

Commenti

Chiamare il AddDirtyRect metodo per indicare che il codice ha apportato al buffer nascosto.

Quando si chiama questo metodo più volte, le aree modificate vengono accumulate in una rappresentazione sufficiente, ma non necessariamente minima. Per un'efficienza, è garantito che solo le aree contrassegnate come dirty vengano copiate nel buffer anteriore. Tuttavia, qualsiasi parte della bitmap può essere copiata in avanti, quindi è necessario assicurarsi che l'intero buffer nascosto sia sempre valido.

Chiamare il AddDirtyRect metodo solo tra le chiamate ai Lock metodi e Unlock , come descritto nelle note della WriteableBitmap classe.

Si applica a