VB 提示实时错误‘5’是怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/04/29 22:48:57
For i = 1 To Picture1.ScaleWidth
For j = 1 To Picture1.ScaleHeight
bc = Picture1.Point(i, j)
r = bc Mod 255
g = (bc \ 255) Mod 255
b = bc \ 255 \ 255
a = mu * a * (1 - a)
a = a * 100
a = n
r = r + a
g = g + a
b = b + a
If r > 255 Then r = r - 255
If g > 255 Then g = g - 255
If b > 255 Then b = b - 255
a = a / 100
x = i
y = j
Picture2.PSet (x, y), RGB(r, g, b)
DoEvents
Next j, i

如果点(i,j)不在Picture1内,则Picture1.Point(i,j)=-1,对任意i,j,点(Picture1.ScaleWidth,j)和(i,Picture1.ScaleHeight)在Picture1的右边界和下边界上,结果导致r=-1,如果把
For i = 1 To Picture1.ScaleWidth
For j = 1 To Picture1.ScaleHeight
两句改为
Picture1.ScaleMode = 3
Picture2.ScaleMode = 3
For i = 0 To Picture1.ScaleWidth - 1
For j = 0 To Picture1.ScaleHeight - 1
就不会发生实时错误 '5' 了,并且能使速度提高225倍(15的平方)。
要获得点的RGB值,应该把
r = bc Mod 255
g = (bc \ 255) Mod 255
b = bc \ 255 \ 255
三句的255都改为256
变量 a , mu , n 始终是空值或零,在代码中没用。

不知你的意图,但有一点是有问题的,那就是:
bc = Picture1.Point(i, j)
r = bc Mod 255
第一句刚开始就是负,于是,r也是负值,造成后面颜色设置错误。建议:bc = Picture1.Point(i, j)+255,就可以负值的问题。

rgb(r,g,b)
运行的时候 r=-1,g=0,b=0 然后报错!
你上面基本所有的变量都没声明,所以 也不清楚你的变量都表示的什么意思.
可以肯定的是给颜色赋值的过程有问题

需声明变量