使用色彩重新對應表

重新對應是根據色彩重新對應表格轉換影像中色彩的程式。 色彩重新對應表格是 ColorMap 結構的陣列。 陣列中的每個 ColorMap 結構都有 舊的Color 成員和 newColor 成員。

當 GDI+ 繪製影像時,影像的每個圖元都會與舊色彩的陣列進行比較。 如果圖元的色彩符合舊色彩,其色彩會變更為對應的新色彩。 色彩只會變更為轉譯, 影像本身的色彩值 (儲存在 ImageBitmap 物件) 不會變更。

若要繪製重新對應的影像,請初始化 ColorMap 結構的陣列。 將該陣列的位址傳遞至ImageAttributes 物件的 ImageAttributes::SetRemapTable方法,然後將ImageAttributes物件的位址傳遞至Graphics物件的DrawImage Methods方法。

下列範例會從檔案RemapInput.bmp建立 Image 物件。 此程式碼會建立由單一 ColorMap 結構組成的色彩重新對應表。 ColorMap結構的oldColor成員為紅色,而 newColor成員為藍色。 影像會繪製一次而不重新對應,一次使用重新對應。 重新對應程式會將所有紅色圖元變更為藍色。

Image            image(L"RemapInput.bmp");
ImageAttributes  imageAttributes;
UINT             width = image.GetWidth();
UINT             height = image.GetHeight();
ColorMap         colorMap[1];

colorMap[0].oldColor = Color(255, 255, 0, 0);  // opaque red
colorMap[0].newColor = Color(255, 0, 0, 255);  // opaque blue

imageAttributes.SetRemapTable(1, colorMap, ColorAdjustTypeBitmap);

graphics.DrawImage(&image, 10, 10, width, height);

graphics.DrawImage(
   &image, 
   Rect(150, 10, width, height),  // destination rectangle 
   0, 0,        // upper-left corner of source rectangle 
   width,       // width of source rectangle
   height,      // height of source rectangle
   UnitPixel,
   &imageAttributes);

下圖顯示左側的原始影像,以及右側重新對應的影像。

顯示多色影像兩個版本的圖例;第一個版本中的紅色區域在第二個版本中是藍色