Leggere in inglese

Condividi tramite


Bitmap.LockBits Metodo

Definizione

Blocca un oggetto Bitmap nella memoria di sistema.

Overload

LockBits(Rectangle, ImageLockMode, PixelFormat)

Blocca un oggetto Bitmap nella memoria di sistema.

LockBits(Rectangle, ImageLockMode, PixelFormat, BitmapData)

Blocca un oggetto Bitmap nella memoria di sistema.

LockBits(Rectangle, ImageLockMode, PixelFormat)

Origine:
Bitmap.cs
Origine:
Bitmap.cs
Origine:
Bitmap.cs

Blocca un oggetto Bitmap nella memoria di sistema.

C#
public System.Drawing.Imaging.BitmapData LockBits (System.Drawing.Rectangle rect, System.Drawing.Imaging.ImageLockMode flags, System.Drawing.Imaging.PixelFormat format);

Parametri

rect
Rectangle

Struttura Rectangle che specifica la parte dell'oggetto Bitmap da bloccare.

flags
ImageLockMode

Enumerazione di ImageLockMode che specifica il livello di accesso (lettura/scrittura) per l'oggetto Bitmap.

format
PixelFormat

Enumerazione di PixelFormat che specifica il formato dati dell'oggetto Bitmap.

Restituisce

Oggetto BitmapData contenente informazioni sull'operazione di blocco.

Eccezioni

L'oggetto PixelFormat non rappresenta un valore bit per pixel specifico.

-oppure-

Per una bitmap viene passato un PixelFormat non corretto.

Operazione non riuscita.

Esempio

Nell'esempio di codice seguente viene illustrato come usare le PixelFormatproprietà , , WidthHeighte , i LockBits metodi e UnlockBitsScan0 e l'enumerazioneImageLockMode. Questo esempio è progettato per essere usato con Windows Forms. Questo esempio non è progettato per funzionare correttamente con tutti i formati pixel, ma per fornire un esempio di come usare il LockBits metodo. Per eseguire questo esempio, incollarlo in un modulo e gestire l'evento del Paint modulo chiamando il LockUnlockBitsExample metodo, passando e come PaintEventArgs.

C#
private void LockUnlockBitsExample(PaintEventArgs e)
    {

        // Create a new bitmap.
        Bitmap bmp = new Bitmap("c:\\fakePhoto.jpg");

        // Lock the bitmap's bits.  
        Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
        System.Drawing.Imaging.BitmapData bmpData =
            bmp.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite,
            bmp.PixelFormat);

        // Get the address of the first line.
        IntPtr ptr = bmpData.Scan0;

        // Declare an array to hold the bytes of the bitmap.
        int bytes  = Math.Abs(bmpData.Stride) * bmp.Height;
        byte[] rgbValues = new byte[bytes];

        // Copy the RGB values into the array.
        System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes);

        // Set every third value to 255. A 24bpp bitmap will look red.  
        for (int counter = 2; counter < rgbValues.Length; counter += 3)
            rgbValues[counter] = 255;

        // Copy the RGB values back to the bitmap
        System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes);

        // Unlock the bits.
        bmp.UnlockBits(bmpData);

        // Draw the modified image.
        e.Graphics.DrawImage(bmp, 0, 150);
    }

Commenti

Usare il LockBits metodo per bloccare una bitmap esistente nella memoria di sistema in modo che possa essere modificata a livello di codice. È possibile modificare il colore di un'immagine con il SetPixel metodo, anche se il LockBits metodo offre prestazioni migliori per le modifiche su larga scala.

Specifica BitmapData gli attributi di Bitmap, ad esempio dimensioni, formato pixel, indirizzo iniziale dei dati pixel in memoria e lunghezza di ogni riga di analisi (stride).

Quando si chiama questo metodo, è necessario usare un membro dell'enumerazione System.Drawing.Imaging.PixelFormat che contiene un valore BPP (Bits-per-pixel) specifico. L'uso di System.Drawing.Imaging.PixelFormat valori come Indexed e Gdi genererà un System.ArgumentExceptionoggetto . Inoltre, passando il formato pixel non corretto per una bitmap genererà un System.ArgumentExceptionoggetto .

Si applica a

.NET Framework 4.8.1 e altre versioni
Prodotto Versioni
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

LockBits(Rectangle, ImageLockMode, PixelFormat, BitmapData)

Origine:
Bitmap.cs
Origine:
Bitmap.cs
Origine:
Bitmap.cs

Blocca un oggetto Bitmap nella memoria di sistema.

C#
public System.Drawing.Imaging.BitmapData LockBits (System.Drawing.Rectangle rect, System.Drawing.Imaging.ImageLockMode flags, System.Drawing.Imaging.PixelFormat format, System.Drawing.Imaging.BitmapData bitmapData);

Parametri

rect
Rectangle

Struttura rettangolare che specifica la parte dell'oggetto Bitmap da bloccare.

flags
ImageLockMode

Uno dei valori di ImageLockMode che specifica il livello di accesso (lettura/scrittura) per l'oggetto Bitmap.

format
PixelFormat

Uno dei valori di PixelFormat che specifica il formato dati di Bitmap.

bitmapData
BitmapData

Oggetto BitmapData contenente informazioni sull'operazione di blocco.

Restituisce

Oggetto BitmapData contenente informazioni sull'operazione di blocco.

Eccezioni

Il valore di PixelFormat non rappresenta un valore bit per pixel specifico.

-oppure-

Per una bitmap viene passato un PixelFormat non corretto.

Operazione non riuscita.

Commenti

Usare il LockBits metodo per bloccare una bitmap esistente nella memoria di sistema in modo che possa essere modificata a livello di codice. È possibile modificare il colore di un'immagine con il SetPixel metodo, anche se il LockBits metodo offre prestazioni migliori per le modifiche su larga scala.

Quando si chiama questo metodo, è necessario usare un membro dell'enumerazione System.Drawing.Imaging.PixelFormat che contiene un valore BPP (Bits-per-pixel) specifico. L'uso di System.Drawing.Imaging.PixelFormat valori, ad esempio Indexed e Gdi, genererà un System.ArgumentExceptionoggetto . Inoltre, passando il formato pixel non corretto per una bitmap genererà un System.ArgumentExceptionoggetto .

Questa versione del LockBits metodo deve essere usata con un flags valore di ImageLockMode.UserInputBuffer.

Si applica a

.NET Framework 4.8.1 e altre versioni
Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9