Aracılığıyla paylaş


WriteableBitmap.AddDirtyRect(Int32Rect) Yöntem

Tanım

Değiştirilen bit eşlem alanını belirtir.

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)

Parametreler

dirtyRect
Int32Rect

Int32Rect Değişen alanı temsil eden. Boyutlar piksel cinsindendir.

Öznitelikler

Özel durumlar

Bit eşlem, veya TryLock(Duration) yöntemlerine Lock() yapılan bir çağrı tarafından kilitlenmedi.

dirtyRect sınırlarının WriteableBitmapdışında kalır.

Örnekler

Aşağıdaki kod örneği, yöntemi kullanılarak AddDirtyRect değiştirilen arka arabellek alanının nasıl belirtileceğini gösterir.

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

Açıklamalar

Kodunuzun AddDirtyRect arka arabellekte yaptığı değişiklikleri göstermek için yöntemini çağırın.

Bu yöntemi birden çok kez çağırdığınızda, değiştirilen alanlar yeterli bir şekilde birikir, ancak minimum gösterim olması gerekmez. Verimlilik için yalnızca kirli olarak işaretlenen alanların ön tampona ileriye doğru kopyalanması garanti edilir. Bununla birlikte, bit eşleminin herhangi bir kısmı ileriye doğru kopyalanabilir, bu nedenle tüm geri arabelleğinin her zaman geçerli olduğundan emin olmanız gerekir.

AddDirtyRect sınıf açıklamalarında açıklandığı gibi yöntemini yalnızca ve Unlock yöntemlerine yapılan çağrılar Lock arasında çağırınWriteableBitmap.

Şunlara uygulanır