设备无关位图的一点问题,为什么在 32位色与 16位色下得到的颜色不同? ( 积分: 30 )

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
设备无关位图的一点问题,为什么在 32位色与 16位色下得到的颜色不同?

我在内存中建一个TBitmap 指定它的 HandleType = bmDIB; //与设备无关

再用一些颜色在上面做图,再显示出来,但在 16位色与 32 位色的系统下颜色是不同的。

如:颜色 $99894A .在16位色下就变成了 $9C8E4A了。

这个程序对颜色的要求很高,不能有差别的。

我是用 Bitmap.Canvas.Pixels[] 来获取颜色的。

如何解决这种差别问题,
我希望我用一种颜色在画布上画了线,在32位色与16位色系统下是一样的????
 
设备无关位图的一点问题,为什么在 32位色与 16位色下得到的颜色不同?

我在内存中建一个TBitmap 指定它的 HandleType = bmDIB; //与设备无关

再用一些颜色在上面做图,再显示出来,但在 16位色与 32 位色的系统下颜色是不同的。

如:颜色 $99894A .在16位色下就变成了 $9C8E4A了。

这个程序对颜色的要求很高,不能有差别的。

我是用 Bitmap.Canvas.Pixels[] 来获取颜色的。

如何解决这种差别问题,
我希望我用一种颜色在画布上画了线,在32位色与16位色系统下是一样的????
 
Canvas.Pixels[]就和设备有关了(Canvas就是当前设备的一个抽象). 用 Bitmap.ScanLine可以读到原始图片中的颜色值
 
哦,这样吗?我试试看

多谢了。
 
用 Bitmap.ScanLine 如何读出一个 DIB 的颜色值???一个颜色是4字节还是3字节???

给我一点代码片断吧
 
需要加入一行 PixelFormat = pf24bit;
就可以了。
 
接受答案了.
 
后退
顶部