WriteableBitmap.AddDirtyRect(Int32Rect) Methode

Definition

Gibt den Bereich der geänderten Bitmap an.

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)

Parameter

dirtyRect
Int32Rect

Ein Int32Rect Bereich, der geändert wurde. Abmessungen sind in Pixeln.

Attribute

Ausnahmen

Die Bitmap wurde nicht durch einen Aufruf der Lock() Methoden gesperrt TryLock(Duration) .

dirtyRect liegt außerhalb der Grenzen der WriteableBitmap.

Beispiele

Das folgende Codebeispiel zeigt, wie Sie den Bereich des Hintergrundpuffers angeben, der mithilfe der AddDirtyRect Methode geändert wurde.

    // 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();
        }
    }

Hinweise

Rufen Sie die AddDirtyRect Methode auf, um anzugeben, dass der Code Änderungen am Hintergrundpuffer vorgenommen hat.

Wenn Sie diese Methode mehrmals aufrufen, werden die geänderten Bereiche in einer ausreichenden, aber nicht unbedingt minimalen Darstellung gesammelt. Aus Effizienzgründen werden garantiert nur die Bereiche, die als schmutzig gekennzeichnet sind, in den Frontpuffer kopiert. Jeder Teil der Bitmap kann jedoch vorwärts kopiert werden, daher müssen Sie sicherstellen, dass der gesamte Hintergrundpuffer immer gültig ist.

Rufen Sie die AddDirtyRect Methode nur zwischen Aufrufen der Lock Methoden und Unlock Methoden auf, wie in den WriteableBitmap Klassennotizen beschrieben.

Gilt für: