嗯,(对我来说),经过一个小时的调查,我在我的一侧设法解决了这个问题。
在VB.NET(v4.0 VS-SP1)中,我发现编译器没有抛出错误,IntelliSense也没有抛出错误的bug:
请注意下面,如果我在函数中添加以下行(程序中的任何位置,类/模块/表单/等):
MyGraphics.DrawImage(OriginalImage.Clone(New System.Drawing.Rectangle(ClipX1, ClipY1, ClipW, ClipH), Drawing.Imaging.PixelFormat.Format24bppRgb), 0, 0, TempWidth, TempHeight)
编译器在调试时甚至在进入函数之前就会抛出此错误,它甚至没有到达该行(只是添加到函数中,就使编译器害怕进入此函数)。
我从代码中的另一个函数中复制了这行代码,现有的函数能够正常工作,但新函数不能。这实在令人震惊。
现在,我再次进行了双重检查,并找到了原因,因为在能够工作的代码中, OriginalImage 对象被定义为 Bitmap
,然而,在无法工作的代码中,我将其定义为 Image
。
我进一步查看了上面的代码行,并检查了“clone”函数所接受的参数/参数,来自Bitmap
实例的参数是正确的,并且有3个变形(即您可以使用3组不同的参数调用该函数),然而,对于Image
类型的实例,Clone
不接受任何参数!。
看到这个问题,我感到非常震惊,问题是在IntelliSense中我没有收到任何错误或警告,也没有编译器错误,代码编译通过,但函数无法执行,我确定这是.NET中的一个错误(咳咳...一个特性)。
修复它的方法是将system.drawing.Image
更改为system.drawing.Bitmap
,之后代码正常工作。
希望这能帮到你。
顺祝商祺
Heider