如何修改位图并在以后使用它而不存储或绘图

时间:2009-02-15 18:04:36

标签: c# graphics drawing

我正试图在C#中自己做一些事情。我最初来自Java,这是我用C#

的第一个“项目”

所以我知道,如何使用不同的ColorMatrizes在应用程序中绘制处理过的位图。我也有这些,但我想使用已处理的图片来更好地分析图片。

这些是我获取ImageAttribute的方法

public static ImageAttributes ToGrayscale(Bitmap b)
public static ImageAttributes ToNegative(Bitmap b)
public static ImageAttributes ToSepia(Bitmap b)
public static ImageAttributes SetBrightness(Bitmap b, float Brightness)
public static ImageAttributes SetContrast(Bitmap b, float Contrast)

这是我绘制它的方法

Graphics g = this.CreateGraphics();
g.DrawImage(bmp,new Rectangle(0, 0, bmp.Width, bmp.Height), 
            0, 0, bmp.Width, bmp.Height, 
            GraphicsUnit.Pixel, ImageAnalysis.ToGrayscale(bmp));
g.Dispose(); 

这就是我想要的:

FindLines( setConrast(toGrayscale(bmp),200) )

但是我找不到将更改永久保存到位图对象的方法。也许有人之前做过这件事可以帮助我

1 个答案:

答案 0 :(得分:3)

而不是使用此

绘制到屏幕上
Graphics g = this.CreateGraphics();

您创建一个新的位图然后使用像这样获得的Graphics对象绘制到该位图

Bitmap bmpNew = new Bitmap( width, height );
Graphics g = Graphics.FromBitmap( bmpNew );