位图,图形和显示字节[]为图像 - 重绘后,图像变暗

时间:2012-01-08 23:50:55

标签: c# .net

这可能很奇怪,但问题是真的。 这是源代码:

    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和Recolor功能的作用并不重要,但问题是在使用此功能后越来越多次 - 我的img越来越暗......这不是开玩笑 - 第一次它很轻,之后3次有一点灰色,经过7次全黑。

发生了什么事? o.O

如果我在这一行之后做出破坏:

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

VS告诉我,每次更新都会改变,但不是。

1 个答案:

答案 0 :(得分:1)

我认为这一行:

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

你的问题。根据您传递的值,您将复合图像的色调并使其每次变暗。

修改

根据您的描述,我假设您在每次迭代时传递相同的图像。换句话说,您正在传递图像,更改色调,然后传递生成的图像,更改它的色调等。

色调变化会产生累积效应。这不像是换色。

祝你好运!