Sdílet prostřednictvím


WriteableBitmap.AddDirtyRect(Int32Rect) Metoda

Definice

Určuje oblast rastrového obrázku, který se změnil.

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)

Parametry

dirtyRect
Int32Rect

Představuje Int32Rect oblast, která se změnila. Rozměry jsou v pixelech.

Atributy

Výjimky

Rastrový obrázek nebyl uzamčen voláním Lock() nebo TryLock(Duration) metodami.

dirtyRect spadá mimo hranice WriteableBitmap.

Příklady

Následující příklad kódu ukazuje, jak určit oblast zpětné vyrovnávací paměti, která se změnila AddDirtyRect pomocí metody.

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

Poznámky

Zavolejte metodu, AddDirtyRect která indikuje změny kódu provedené v back bufferu.

Když tuto metodu voláte vícekrát, změněné oblasti se hromadí v dostatečném, ale nemusí nutně minimální reprezentaci. Z důvodu efektivity jsou zaručeny, že se zkopírují do přední vyrovnávací paměti pouze oblasti označené jako špinavé. Všechny části rastrového obrázku se ale můžou kopírovat dopředu, takže je nutné zajistit, aby byla celá zpětná vyrovnávací paměť vždy platná.

Volejte metodu AddDirtyRect pouze mezi voláními Lock metod a Unlock metodami, jak je popsáno v WriteableBitmap poznámkách třídy.

Platí pro