0

Net 4.0 的代码合同中的以下警告是什么意思以及如何修复它???

CodeContracts: requires unproven: (image.PixelFormat & PixelFormat.Indexed) == 0

我正在做:var bmp = new Bitmap(pSize.Width, pSize.Height, System.Drawing.Imaging.PixelFormat.Indexed)var g = Graphics.FromImage(this._otherBitmap)

顺便说一句:关于代码合同的成熟程度以及您是否会使用它们以及它们是否仍然存在等问题存在一些问题,但它们是 2009 年到 2011 年。现在是 2013 年......你怎么看???

提前致谢

4

1 回答 1

1

问题是它Graphics.FromImage()不能与索引位图一起使用,并且相应的合同程序集 ( System.Drawing.Contracts.dll) 包含强制执行它的先决条件。静态检查器在您的代码中找不到任何内容来证明满足要求,因此它会向您发出警告。

您必须确保this._otherBitmap不是使用该PixelFormat.Indexed格式创建的。如果您绝对确定不是,您可以在调用上方添加这一行Graphics.FromImage()

Contract.Assume((this._otherBitmap.PixelFormat & PixelFormat.Indexed) == 0);

...但是由于警告告诉您该FromImage()方法的实际要求,因此如果您错了,它将断言或抛出异常。

于 2013-05-23T15:24:40.243 回答