2010-12-13 51 views
0

好吧,这是一个奇怪的。巨大的道具给知道这一点的人。位图对象将rgb(13,11,12)变成rgb(211,211,211)?

我有这段代码,它会播下图像的一部分,并将它放入bmpCropped

void CropImage() 
    { 
     int W = nowX - StartX; 
     int H = nowY - StartY; 

     if (W > 0 && H > 0) 
     { 
      bmpCropped = new Bitmap(W, H); 
      Graphics gfxCropped = Graphics.FromImage(bmpCropped); 
      gfxCropped.DrawImage(bmpOriginal, new Rectangle(0, 0, W, H), new Rectangle(StartX, StartY, W, H), GraphicsUnit.Pixel); 
     } 
    } 

一些奇怪的原因,具有的RGB值为R所有颜色:13,G:11,B:12被改变为R:211,G:211,B:211。注意DrawImage? bmpCropped绘制在屏幕上,我根本没有看到211,211,211。但如果我使用bmpCropped.Save(...)保存图像,我看到了211,211,211。

任何人有任何线索,为什么会发生这种情况,如果我能解决这个问题而不改变像素到不同的颜色?

+0

你保存在什么格式? – casablanca 2010-12-13 20:02:09

+0

它发生在jpg和png中。 – Codecat 2010-12-13 20:05:01

+0

我也尝试过其他色彩组合,如11,12,13,但实际上只有13,11,12。没有其他的。 – Codecat 2010-12-13 20:05:33

回答

2

听起来就像使用透明键一样,透明的源位图。您的目的地的背景颜色通过透明像素显示。

+0

我通过制作一个确保具有正确PixelFormat的新图形对象来修复它。谢谢! – Codecat 2010-12-13 20:32:24