Udostępnij za pośrednictwem


WriteableBitmap.AddDirtyRect(Int32Rect) Metoda

Definicja

Określa obszar zmienionej mapy bitowej.

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

Reprezentująca Int32Rect zmieniony obszar. Wymiary są w pikselach.

Atrybuty

Wyjątki

Mapa bitowa nie została zablokowana przez wywołanie Lock() metody lub TryLock(Duration) .

dirtyRect znajduje się poza granicami obiektu WriteableBitmap.

Przykłady

W poniższym przykładzie kodu pokazano, jak określić obszar buforu wstecznego, który uległ zmianie przy użyciu AddDirtyRect 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();
        }
    }

Uwagi

Wywołaj metodę , AddDirtyRect aby wskazać zmiany wprowadzone w kodzie do buforu wstecznego.

W przypadku wielokrotnego wywoływania tej metody zmienione obszary są skumulowane w wystarczającej ilości, ale niekoniecznie minimalna reprezentacja. W celu zapewnienia wydajności należy skopiować do buforu frontu tylko obszary oznaczone jako zanieczyszczone. Jednak każda część mapy bitowej może zostać skopiowana do przodu, dlatego należy upewnić się, że cały bufor wsteczny jest zawsze prawidłowy.

Wywołaj metodę AddDirtyRect tylko między wywołaniami Lock metod i Unlock , zgodnie z opisem WriteableBitmap w uwagach klasy.

Dotyczy