【发布时间】:2012-08-02 14:38:32
【问题描述】:
我想反转一个 Image 对象。目前我的代码如下所示:
private Image Invert(Image img)
{
var bmpPicture = new Bitmap(img.Width, img.Height);
var iaPicture = new ImageAttributes();
var cmPicture = new ColorMatrix { Matrix00 = -1, Matrix11 = -1, Matrix22 = -1 };
iaPicture.SetColorMatrix(cmPicture);
var gfxPicture = Graphics.FromImage(img);
var rctPicture = new Rectangle(0, 0, img.Width, img.Height);
gfxPicture.DrawImage(img, rctPicture, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, iaPicture);
return bmpPicture;
}
但是,当我运行它并在PictureBox 中显示它时,结果是黑色图像。我在 Windows 8 Release preview 下的 Visual Studio 2012 中运行它。如果有更好的方法来做到这一点,请告诉我。谢谢。
【问题讨论】:
-
您还需要设置 Matrix33 = 1 和 Matrix44 = 1 以保留这些项目的标识
-
如果图像是 8bpp,你可以反转它的调色板。
标签: c# .net image-processing gdi+