Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El proceso de reasignación convierte los colores de una imagen con arreglo a una tabla de reasignación de colores. Dicha tabla es una matriz de objetos ColorMap. Cada objeto ColorMap de la matriz tiene una propiedad OldColor y una propiedad NewColor.
Cuando GDI+ dibuja una imagen, cada píxel de ésta se compara con la matriz de colores antiguos. Si el color de un píxel coincide con un color antiguo, el color cambia al color nuevo correspondiente. Los colores sólo cambian para el procesamiento: los valores de color de la imagen en sí (almacenados en un objeto Image o Bitmap) no varían.
Para dibujar una imagen reasignada, inicialice una matriz de objetos ColorMap. Pase dicha matriz al método SetRemapTable de un objeto ImageAttributes y, a continuación, pase el objeto ImageAttributes al método DrawImage de un objeto Graphics.
En el siguiente ejemplo se crea un objeto Image a partir del archivo RemapInput.bmp. El código crea una tabla de reasignación de colores formada por un objeto ColorMap único. La propiedad OldColor del objeto ColorRemap es rojo, y la propiedad NewColor, azul. La imagen se dibuja una vez sin reasignación y otra vez con reasignación. El proceso de reasignación cambia todos los píxeles rojos a azul.
Dim image = New Bitmap("RemapInput.bmp")
Dim imageAttributes As New ImageAttributes()
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim colorMap As New ColorMap()
colorMap.OldColor = Color.FromArgb(255, 255, 0, 0) ' opaque red
colorMap.NewColor = Color.FromArgb(255, 0, 0, 255) ' opaque blue
Dim remapTable As ColorMap() = {colorMap}
imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap)
e.Graphics.DrawImage(image, 10, 10, width, height)
' Pass in the destination rectangle (2nd argument), the upper-left corner
' (3rd and 4th arguments), width (5th argument), and height (6th
' argument) of the source rectangle.
e.Graphics.DrawImage( _
image, _
New Rectangle(150, 10, width, height), _
0, 0, _
width, _
height, _
GraphicsUnit.Pixel, _
imageAttributes)
[C#]
Image image = new Bitmap("RemapInput.bmp");
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;
ColorMap colorMap = new ColorMap();
colorMap.OldColor = Color.FromArgb(255, 255, 0, 0); // opaque red
colorMap.NewColor = Color.FromArgb(255, 0, 0, 255); // opaque blue
ColorMap[] remapTable = {colorMap};
imageAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);
e.Graphics.DrawImage(image, 10, 10, width, height);
e.Graphics.DrawImage(
image,
new Rectangle(150, 10, width, height), // destination rectangle
0, 0, // upper-left corner of source rectangle
width, // width of source rectangle
height, // height of source rectangle
GraphicsUnit.Pixel,
imageAttributes);
En la siguiente ilustración se muestra la imagen original a la izquierda y la imagen reasignada a la derecha.
.png)