Я пытаюсь разработать специальный вид тепловой карты, где цвет маркера зависит от значения некоторых вычисляемых переменных.
Что мне нужно сделать, это изменить цвет моего существующего изображения EMF +. Следующий код работает как шарм при использовании файлов png или wmf, но DrawImage ничего не рисует при использовании файла EMF +:
//EMF+ image (color = red)
Metafile mf = new Metafile(@"C:\output\redman.emf");
//changes the color of the image from red to green (works with .png, but not with EMF+)
float[][] matrixColTrans =
{
new float[] {215.0f / 195.0f, 0, 0, 0, 0}
, new float[] {0, 240.0f / 45.0f, 0, 0, 0}
, new float[] {0, 0, 80.0f / 5.0f, 0, 0}
, new float[] {0, 0, 0, 1, 0}
, new float[] {0, 0, 0, 0, 1}
};
ColorMatrix colorMatrix = new ColorMatrix(matrixColTrans);
ImageAttributes ia = new ImageAttributes();
ia.SetColorMatrix(colorMatrix);
g.DrawImage(
mf
, new Rectangle(80, 0, 20, 50)// destination rectangle
, 0, 0 // upper-left corner of source rectangle
, mf.Width // width of source rectangle
, mf.Height // height of source rectangle
, GraphicsUnit.Pixel
, ia
);
То же самое происходит, например, при использовании ia.SetRemapTable.
Есть идеи, как решить эту проблему?