我们如何才能将colormatrix仅用作图像的一部分而不是整个图像?

时间:2009-08-03 17:37:56

标签: c# vb.net image-processing gdi+ colormatrix

我知道使用colormatrix。但这对整个形象起作用。有没有办法使用colormatrix只是图像的一部分而不是整个图像。

例如,我想仅给出图像边框区域的亮度。

我正在使用c#。

2 个答案:

答案 0 :(得分:0)

鉴于ColorMatrix仅适用于单个颜色矢量/像素,您需要做的就是仔细选择您的像素,使其符合您的标准。

已经有一段时间了,但是如果你逐行扫描像素,那么整个第一行和最后一行以及所有其他行的第一列和最后一列都可以被转换。

答案 1 :(得分:0)

如果:

  • bitmap1是您的原始位图,
  • bitmap2是新位图,
  • new Rectangle(100,50,20,20)是您想要更改的Rectangle 制作,
  • yourImageAtributes是ImageAttributes的对象(我希望你知道 如何使用它):
Bitmap bitmap2 = new Bitmap(bitmap1.Width, bitmap1.Height); 

//copy bitmap1 to bitmap2  
Graphics.FromImage(bitmap2).DrawImage(bitmap1, 0, 0);

//copy part of bitmap1 to bitmap2 with your own image attributes (ColorMatrix, etc..) 
Graphics.FromImage(bitmap2).DrawImage(bitmap1, new Rectangle(100, 50, 20, 20), 100, 50, 20, 20, GraphicsUnit.Pixel, yourImageAttributes);

如果只想要边框,可以先改变整个图像,然后在里面复制原始图像的矩形。