2010-12-13 20 views
0

これは奇妙なものです。これを知っている人に巨大な小道具。ビットマップオブジェクトはrgb(13,11,12)をrgb(211,211,211)に変換しますか?

私はこのコードを持っており、画像の一部を切り取り、bmpCroppedに入れています。 13、G:11、B:12をRに変更される:211、G:211、B:211いくつかの奇妙な理由で、RのRGB値を持つすべての色について

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); 
     } 
    } 

。 DrawImageに注目してください。 bmpColppedが画面に表示されます。そこには211,211,211がまったく表示されません。しかし、bmpCropped.Save(...)を使用してイメージを保存すると、211,211,211が表示されます。

誰もがなぜ、どのようにこれが起こっているのかについての手がかりがあります。ピクセルを別の色に変更せずにこの問題を回避できたら、

+0

どのような形式で保存していますか? – casablanca

+0

これはjpgとpngの両方で発生します。 – Codecat

+0

私は11,12,13のような他の色の組み合わせも試しましたが、実際には13,11,12しかありません。他に何もない。 – Codecat

答えて

2

トランスペアレントキーを使用して透明なソースビットマップがあるように聞こえます。宛先の背景色は透明なピクセルを介して表示されます。

+0

私は、正しいPixelFormatを持っていることを確認した新しいグラフィックスオブジェクトを作成することで修正しました。ありがとう! – Codecat

関連する問題