WriteableBitmap.AddDirtyRect(Int32Rect) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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.