Freigeben über


WriteableBitmap.AddDirtyRect(Int32Rect) Methode

Definition

Gibt den Bereich der Bitmap an, der geändert wurde.

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, das den geänderten Bereich darstellt. Abmessungen werden in Pixel angegeben.

Attribute

Ausnahmen

Die Bitmap wurde nicht durch einen Aufruf der Lock()-Methode oder der TryLock(Duration)-Methode gesperrt.

dirtyRect liegt außerhalb der Grenzen von WriteableBitmap.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Sie den Bereich des Backpuffers 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 Methode auf, um Änderungen anzugeben, die AddDirtyRect Ihr Code an den Backpuffer vorgenommen hat.

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

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

Gilt für