2012-01-08 8 views
0

これは奇妙なことかもしれませんが、問題は本物です。 これは、ソースコードである:ビットマップ、グラフィック、および表示バイト[] - 再描画後に画像が暗くなる

public byte[] getBytes(int type, int color) 
    { 
     Bitmap bit = Art.GetStatic(type); 

     if(color != 0) RedrawHue.RecolorFull(hues[color], bit); 

     Bitmap newbit = new Bitmap(bit.Width, bit.Height); 

     Graphics newgraph = Graphics.FromImage(newbit); 

     newgraph.DrawImage(bit, 0, 0); 

     this.forImgPictureBox.Image = newbit; 

     MemoryStream ms = new MemoryStream(); 

     newbit.Save(ms, ImageFormat.Png); 
     byte[] res = ms.ToArray(); 
     ms.Dispose(); 

     return res; 

    } 

GetStaticや色の変更機能が何をするかは重要ではありませんが、問題は私のIMG times-この機能より多くを使用した後に、より多くの暗くなるだろうということです...それは冗談ではありません - 最初は軽いです、3回後に少し灰色があり、7回後にはすべて黒です。

何が起こっているのですか? o.O

私は、この行の後breakpoing作る場合:

Bitmap newbit = new Bitmap(bit.Width, bit.Height); 

VSが私を示し、そのnewbit毎回変化しますが、少しではありません。

+0

「GetStaticとRecolorが何をするかは関係ありません」と言われたら、これらの呼び出しを削除するとどうなりますか? –

+0

つまり、この関数は大きなファイルからイメージのバイトを取得します。 – FSou1

+0

この質問に投票した皆さん、私はそれを得ています。完全に尋ねられたわけではありませんが、英語がOPの元の言語ではないかもしれないという事実を考慮に入れてください。 OPが*尋ねることを試みていることについての少しの考えは、私を下の答えに導き、それが彼らを助けたかもしれない。また、OPがコメントなしで絶えず下降された場合、最初に必要な助けを求めて戻ってくるインセンティブがないかもしれません。お互いがこの場所のポイントを助けていないのですか? –

答えて

1

これは、この行のように私には見えます:

if(color != 0) RedrawHue.RecolorFull(hues[color], bit); 

はあなたの問題です。あなたが渡している値に応じて、画像の色合いを合成し、毎回暗くします。

編集

私はあなたが各反復で同じ画像を渡していることを、あなたの説明から、想定しています。つまり、イメージを渡して、色相を変更し、結果のイメージを渡したり、色相を変更したりしています。

色相の変更は累積的な効果をもたらします。色の変化のようなものではありません。

幸運を祈る!

+0

もし私がこの文字列をコメントすると、色はありませんが、ビットマップは暗くなりません。 Mb u a right = \ – FSou1

+0

しかし、もし私が作るなら:Hues hues2 = Hues.Load(huePath); if(color!= 0)RedrawHue.RecolorFull(hues2 [color]、bit);新しいオブジェクトに毎回関数を作成しますが、それは役に立ちません。 – FSou1

+0

newbitを作成した直後は毎回変わる可能性がありますか? – FSou1

関連する問題