C#位图从像素读取不正确的颜色

C#位图从像素读取不正确的颜色,c#,.net,bitmap,pixel,C#,.net,Bitmap,Pixel,我正在C#.NET3.5中将一个8位png文件读入位图。我的目标是图像上的一个特定像素,它的RGB值为255255,即白色,当通过任何正常程序(如paint.net)读取时。但是,当我通过GetPixel方法或通过锁定位读取它时,指针方式都会产生62,62,62或单字节颜色值62的结果。所以,我的问题是,为什么我得到的是62而不是255 任何洞察都会很棒:D.听起来您的屏幕设置为16位颜色深度。这意味着每个像素由16位描述:5红色、6绿色、5蓝色,每个通道值的范围为0到31(2^5-1)或63(

我正在C#.NET3.5中将一个8位png文件读入位图。我的目标是图像上的一个特定像素,它的RGB值为255255,即白色,当通过任何正常程序(如paint.net)读取时。但是,当我通过GetPixel方法或通过锁定位读取它时,指针方式都会产生62,62,62或单字节颜色值62的结果。所以,我的问题是,为什么我得到的是62而不是255


任何洞察都会很棒:D.

听起来您的屏幕设置为16位颜色深度。这意味着每个像素由16位描述:5红色、6绿色、5蓝色,每个通道值的范围为0到31(2^5-1)或63(2^6-1)。白色像素表示为(31,63,31),可能会调整为(62,62,62)

Net之类的程序执行自己的位图处理,不依赖于系统的位图类,因此它们不依赖于屏幕的颜色深度


因此,尝试将屏幕设置为32位颜色深度-像素将表示为(255255)。请注意,在32位颜色深度中,通常只有24位用于为通道着色-最后8位为Alpha(透明度)或未使用。

一些代码会有所帮助…加载位图时是否指定了正确的像素格式?@SimonWhitehead:我试着编写它,这样就不需要代码了,我相信这是我对它背后的理论理解的问题,而不是代码本身。谢谢乔纳森,这为我解决了这个问题。然而,这确实带来了一系列新的问题,但我会看看我会怎么做。