Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

Bitmap.LockBits (Método) (Rectangle, ImageLockMode, PixelFormat)

Bloquea un objeto Bitmap en la memoria del sistema.

Espacio de nombres:  System.Drawing
Ensamblado:  System.Drawing (en System.Drawing.dll)

[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public BitmapData LockBits(
	Rectangle rect,
	ImageLockMode flags,
	PixelFormat format
)

Parámetros

rect
Tipo: System.Drawing.Rectangle
Estructura Rectangle que especifica la parte de Bitmap que se va a bloquear.
flags
Tipo: System.Drawing.Imaging.ImageLockMode
Enumeración ImageLockMode que especifica el nivel de acceso (lectura y escritura) para el objeto Bitmap.
format
Tipo: System.Drawing.Imaging.PixelFormat
Enumeración PixelFormat que especifica el formato de datos de este objeto Bitmap.

Valor devuelto

Tipo: System.Drawing.Imaging.BitmapData
Objeto BitmapData que contiene información sobre esta operación de bloqueo.

ExcepciónCondición
ArgumentException

La enumeración PixelFormat no es un valor específico de bits por píxel.

O bien

Se ha pasado una enumeración PixelFormat incorrecta para un mapa de bits.

Exception

Error en la operación.

Utilice el método LockBits para bloquear un mapa de bits existente en memoria del sistema para que se pueda cambiar mediante programación. Puede cambiar el color de una imagen con el método SetPixel, aunque el método LockBits proporciona mejor rendimiento para cambios en gran escala.

El objeto BitmapData especifica los atributos de Bitmap, como el tamaño, el formato de píxel, la dirección inicial de los datos de píxel en memoria y la longitud de cada línea de digitalización (intervalo).

Cuando se llama a este método, se debe utilizar un miembro de la enumeración System.Drawing.Imaging.PixelFormat que contiene un valor de bits por píxel (BPP) específico. El uso de valores de System.Drawing.Imaging.PixelFormat como Indexed y Gdi producirá una excepción System.ArgumentException. Además, si se pasa un formato de píxel incorrecto para un mapa de bits, se producirá una excepción System.ArgumentException.

El ejemplo de código siguiente muestra cómo se pueden utilizar las propiedades PixelFormat, Height, Width y Scan0; los métodos LockBits y UnlockBits; y la enumeración ImageLockMode. Este ejemplo no está diseñado para funcionar correctamente con todos los formatos de píxel, sino para proporcionar un ejemplo de cómo utilizar el método LockBits. Este ejemplo se ha diseñado para utilizarlo con Windows Forms. Para ejecutar este ejemplo, péguelo en un formulario y controle el evento Paint del formulario mediante una llamada al método LockUnlockBitsExample y pasándole e como PaintEventArgs.


    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);

        }
    


.NET Framework

Compatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Mostrar: