1

这段代码总是通过算术溢出异常。怎么了 ?

Function ChannelSum(ByVal C As System.Drawing.Color) As Integer
    Dim temp As Integer : temp = (C.R + C.G + C.B)
    Return temp
End Function

...

Dim x, y, R, G, B, a As Integer : Dim tmp As Color
bmp = New Bitmap(picBox.Tag.ToString)
xMax = bmp.Width - 1 : yMax = bmp.Height - 1
For x = 0 To xMax Step 1
    For y = 0 To yMax Step 1
        tmp = bmp.GetPixel(x, y) : a = ChannelSum(tmp)
    Next y
Next x

循环在第一次相遇时中断!

4

1 回答 1

3

CR 和其他都是字节字段,最多只能容纳 255 的值。将字节字段加在一起会产生大于 255 的数字。首先对每个颜色元素使用 CInt()。

 temp = (CInt(C.R) + CInt(C.G) + CInt(C.B))
于 2012-08-02T14:53:48.020 回答