WriteableBitmap.AddDirtyRect(Int32Rect) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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.