在.NET应用程序中,我在Format1bppIndexed
中存储了不同格式的图像(例如PictureBoxes
)。我可以使用框的属性Image
来获取它们。
然后,我需要将它们转换为Bitmap
类以访问内部数据。 (Image
类不像LockBits
那样支持Bitmap
。)
现在要将Image
转移到Bitmap
,您需要Bitmap
构造函数接受一个Image
参数。麻烦始于此:此构造函数将图像转换为Format32bppRgb
格式,而不管初始类型如何,并且该构造函数没有重载,无法强制使用格式。
更糟糕的是,当格式为Format16bppGrayScale
时,构造函数会引发System.ArgumentException
。
但是我想访问原始数据而没有中间转换,包括16位图像。有什么解决方法吗?
经过更多研究,我发现在.NET下对16位图像的支持确实很差。特别是,您不能用DrawImage
显示它们。
答案 0 :(得分:0)
关于您的请求的一些细节对我来说还不是很清楚,所以我假设了一些。
简单的解决方案可能是创建一个支持您所需内容的“ 阴影对象”,然后让PictureBox
显示处理后的结果。实际上,您将在image
的{{1}}上执行的任何操作都将应用于您的影子对象。
但是我不确定,是否可以将其应用于这种特定情况。这主要取决于为什么,您需要使用PictureBox
将像素放入存储器中。这可能表明您正在提高速度,并且使用阴影对象可能会使您回到第一个平方或更差。