ImageAttributes.SetRemapTable 方法

定义

设置颜色重新映射表。Sets the color-remap table.

重载

SetRemapTable(ColorMap[])

为默认类别设置颜色重新映射表。Sets the color-remap table for the default category.

SetRemapTable(ColorMap[], ColorAdjustType)

为指定类别设置颜色重新映射表。Sets the color-remap table for a specified category.

SetRemapTable(ColorMap[])

为默认类别设置颜色重新映射表。Sets the color-remap table for the default category.

public:
 void SetRemapTable(cli::array <System::Drawing::Imaging::ColorMap ^> ^ map);
public void SetRemapTable (System.Drawing.Imaging.ColorMap[] map);
member this.SetRemapTable : System.Drawing.Imaging.ColorMap[] -> unit
Public Sub SetRemapTable (map As ColorMap())

参数

map
ColorMap[]

ColorMap 类型的颜色对数组。An array of color pairs of type ColorMap. 每个颜色对包含现有的颜色(第一个值)和它将映射到的颜色(第二个值)。Each color pair contains an existing color (the first value) and the color that it will be mapped to (the second value).

示例

下面的代码示例旨在与 Windows 窗体一起使用,并且它需要 PaintEventArgse,它是 Paint 事件处理程序的参数。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. 此代码执行以下操作:The code performs the following actions:

  1. 创建一个图像(红色圆圈),将其保存为 Circle2,打开该图像,并将其绘制到屏幕上。Creates an image (a red circle), saves it as Circle2.jpg, opens that image, and draws it to the screen.

  2. 创建将红色映射为绿色的颜色映射。Creates a color map that maps the color red to the color green.

  3. 将之前创建的图像再次绘制到屏幕,但这次使用的是颜色映射。Draws the image created earlier to the screen again, but this time using the color map.

private:
   void SetRemapTableExample( PaintEventArgs^ e )
   {
      // Create a filled, red image, and save it to Circle2.jpg.
      Bitmap^ myBitmap = gcnew Bitmap( 50,50 );
      Graphics^ g = Graphics::FromImage( myBitmap );
      g->Clear( Color::White );
      g->FillEllipse( gcnew SolidBrush( Color::Red ), Rectangle(0,0,50,50) );
      myBitmap->Save( "Circle2.jpg" );

      // Create an Image object from the Circle2.jpg file, and draw it to
      // the screen.
      Image^ myImage = Image::FromFile( "Circle2.jpg" );
      e->Graphics->DrawImage( myImage, 20, 20 );

      // Create a color map.
      array<ColorMap^>^myColorMap = gcnew array<ColorMap^>(1);
      myColorMap[ 0 ] = gcnew ColorMap;
      myColorMap[ 0 ]->OldColor = Color::Red;
      myColorMap[ 0 ]->NewColor = Color::Green;

      // Create an ImageAttributes object, and then pass the
      // myColorMap object to the SetRemapTable method.
      ImageAttributes^ imageAttr = gcnew ImageAttributes;
      imageAttr->SetRemapTable( myColorMap );

      // Draw the image with the remap table set.
      Rectangle rect = Rectangle(150,20,50,50);
      e->Graphics->DrawImage( myImage, rect, 0, 0, 50, 50, GraphicsUnit::Pixel, imageAttr );
   }
private void SetRemapTableExample(PaintEventArgs e)
{
             
    // Create a filled, red image, and save it to Circle2.jpg.
    Bitmap myBitmap = new Bitmap(50, 50);
    Graphics g = Graphics.FromImage(myBitmap);
    g.Clear(Color.White);
    g.FillEllipse(new SolidBrush(Color.Red),
        new Rectangle(0, 0, 50, 50));
    myBitmap.Save("Circle2.jpg");
             
    // Create an Image object from the Circle2.jpg file, and draw it to
             
    // the screen.
    Image myImage = Image.FromFile("Circle2.jpg");
    e.Graphics.DrawImage(myImage, 20, 20);
             
    // Create a color map.
    ColorMap[] myColorMap = new ColorMap[1];
    myColorMap[0] = new ColorMap();
    myColorMap[0].OldColor = Color.Red;
    myColorMap[0].NewColor = Color.Green;
             
    // Create an ImageAttributes object, and then pass the
   // myColorMap object to the SetRemapTable method.
    ImageAttributes imageAttr = new ImageAttributes();
    imageAttr.SetRemapTable(myColorMap);
             
    // Draw the image with the remap table set.
    Rectangle rect = new Rectangle(150, 20, 50, 50);
    e.Graphics.DrawImage(myImage, rect, 0, 0, 50, 50, 
        GraphicsUnit.Pixel, imageAttr);    
}
Public Sub SetRemapTableExample(ByVal e As PaintEventArgs)

    ' Create a filled, red image and save it to Circle2.jpg.
    Dim myBitmap As New Bitmap(50, 50)
    Dim g As Graphics = Graphics.FromImage(myBitmap)
    g.Clear(Color.White)
    g.FillEllipse(New SolidBrush(Color.Red), New Rectangle(0, 0, _
    50, 50))
    myBitmap.Save("Circle2.jpg")

    ' Create an Image object from the Circle2.jpg file, and draw

    ' it to the screen.
    Dim myImage As Image = Image.FromFile("Circle2.jpg")
    e.Graphics.DrawImage(myImage, 20, 20)

    ' Create a color map.
    Dim myColorMap(0) As ColorMap
    myColorMap(0) = New ColorMap
    myColorMap(0).OldColor = Color.Red
    myColorMap(0).NewColor = Color.Green

    ' Create an ImageAttributes object, and then pass the

    ' myColorMap object to the SetRemapTable method.
    Dim imageAttr As New ImageAttributes
    imageAttr.SetRemapTable(myColorMap)

    ' Draw the image with the remap table set.
    Dim rect As New Rectangle(150, 20, 50, 50)
    e.Graphics.DrawImage(myImage, rect, 0, 0, 50, 50, _
    GraphicsUnit.Pixel, imageAttr)
    ' Image
End Sub

注解

颜色重新映射表是 ColorMap 结构的数组。A color-remap table is an array of ColorMap structures. 每个 ColorMap 结构都有两个 Color 对象:一个指定旧颜色,另一个指定指定的新颜色。Each ColorMap structure has two Color objects: one that specifies an old color and one that specifies a corresponding new color. 在呈现过程中,与重新映射表中的旧颜色之一匹配的任何颜色将更改为相应的新颜色。During rendering, any color that matches one of the old colors in the remap table is changed to the corresponding new color.

ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认值、位图、画笔、笔和文本。An ImageAttributes object maintains color and grayscale settings for five adjustment categories: default, bitmap, brush, pen, and text. 例如,可以为默认类别指定颜色重新映射,为位图类别指定颜色重新映射表,并为钢笔类别指定其他颜色重新映射表。For example, you can specify a color remap for the default category, a color-remap table for the bitmap category, and still a different color-remap table for the pen category.

默认颜色调整和灰度调整设置适用于没有自己的调整设置的所有类别。The default color-adjustment and grayscale-adjustment settings apply to all categories that do not have adjustment settings of their own. 例如,如果您从未为 "笔" 类别指定任何调整设置,则默认设置将应用于 "笔" 类别。For example, if you never specify any adjustment settings for the pen category, the default settings apply to the pen category.

SetRemapTable(ColorMap[], ColorAdjustType)

为指定类别设置颜色重新映射表。Sets the color-remap table for a specified category.

public:
 void SetRemapTable(cli::array <System::Drawing::Imaging::ColorMap ^> ^ map, System::Drawing::Imaging::ColorAdjustType type);
public void SetRemapTable (System.Drawing.Imaging.ColorMap[] map, System.Drawing.Imaging.ColorAdjustType type);
member this.SetRemapTable : System.Drawing.Imaging.ColorMap[] * System.Drawing.Imaging.ColorAdjustType -> unit
Public Sub SetRemapTable (map As ColorMap(), type As ColorAdjustType)

参数

map
ColorMap[]

ColorMap 类型的颜色对数组。An array of color pairs of type ColorMap. 每个颜色对包含现有的颜色(第一个值)和它将映射到的颜色(第二个值)。Each color pair contains an existing color (the first value) and the color that it will be mapped to (the second value).

type
ColorAdjustType

ColorAdjustType 的一个元素,指定将设置颜色重新映射表的类别。An element of ColorAdjustType that specifies the category for which the color-remap table is set.

示例

有关代码示例,请参阅 SetRemapTable(ColorMap[]) 方法。For a code example, see the SetRemapTable(ColorMap[]) method.

注解

颜色重新映射表是 ColorMap 结构的数组。A color-remap table is an array of ColorMap structures. 每个 ColorMap 结构都有两个 Color 对象:一个指定旧颜色,另一个指定指定的新颜色。Each ColorMap structure has two Color objects: one that specifies an old color and one that specifies a corresponding new color. 在呈现过程中,与重新映射表中的旧颜色之一匹配的任何颜色将更改为相应的新颜色。During rendering, any color that matches one of the old colors in the remap table is changed to the corresponding new color.

ImageAttributes 对象维护五个调整类别的颜色和灰度设置:默认值、位图、画笔、笔和文本。An ImageAttributes object maintains color and grayscale settings for five adjustment categories: default, bitmap, brush, pen, and text. 例如,可以为默认类别指定颜色重新映射,为位图类别指定颜色重新映射表,并为钢笔类别指定其他颜色重新映射表。For example, you can specify a color remap for the default category, a color-remap table for the bitmap category, and still a different color-remap table for the pen category.

默认颜色调整和灰度调整设置适用于没有自己的调整设置的所有类别。The default color-adjustment and grayscale-adjustment settings apply to all categories that do not have adjustment settings of their own. 例如,如果您从未为 "笔" 类别指定任何调整设置,则默认设置将应用于 "笔" 类别。For example, if you never specify any adjustment settings for the pen category, the default settings apply to the pen category.

为某个类别指定颜色调整或灰度调整设置后,默认调整设置将不再应用于该类别。As soon as you specify a color-adjustment or grayscale-adjustment setting for a certain category, the default adjustment settings no longer apply to that category. 例如,假设您为默认类别指定了调整设置的集合。For example, suppose you specify a collection of adjustment settings for the default category. 如果通过将 Pen 传递到 SetRemapTable 方法来为 "笔" 类别设置颜色重新映射表,则没有任何默认调整设置将应用于画笔。If you set the color-remap table for the pen category by passing Pen to the SetRemapTable method, none of the default adjustment settings will apply to pens.

适用于