C# 位图对象是否将rgb(13,11,12)转换为rgb(21121121121)?

C# 位图对象是否将rgb(13,11,12)转换为rgb(21121121121)?,c#,image,graphics,bitmap,C#,Image,Graphics,Bitmap,好的,这是一个奇怪的。对知道这一点的人来说是个巨大的道具 我有一个代码,它裁剪图像的一部分,并将其放入bmpcroped void CropImage() { int W = nowX - StartX; int H = nowY - StartY; if (W > 0 && H > 0) { bmpCropped = new Bitmap(W, H);

好的,这是一个奇怪的。对知道这一点的人来说是个巨大的道具

我有一个代码,它裁剪图像的一部分,并将其放入
bmpcroped

    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。注意到这张图片了吗?BMPCroped绘制在屏幕上,我根本看不到21121121121。但是如果我使用bmpcroped.save(…)保存图像,我看到的是21121121121


任何人都知道这是为什么以及如何发生的,我是否可以在不改变像素颜色的情况下解决这个问题?

听起来你有一个使用透明键的透明源位图。目的地的背景色通过透明像素显示。

您保存的格式是什么?jpg和png都有。我还尝试了其他颜色组合,如11,12,13,但实际上只有13,11,12。没有其他。什么类型的图像是bmpOriginal?bmpOriginal是由Graphics.CopyFromScreen方法组成的。我通过创建一个新的图形对象来修复它,确保具有正确的像素格式。谢谢