在控件中画线
Line (0#, Point)-(ScaleWidth, Point), RGB(120, 120, 120)Point为外部定义的一个属性点
Public Property Get Point() As Single
PointSpt = sngPoint
End PropertyPublic Property Let Point(ByVal vNewValue As Single)
sngPoint = vNewValue
PropertyChanged "Point"
End Property当然sngPoint定义为内部点 Dim sngPoint As Single
我们无法预测外部属性点的值,如果外部给属性点的值过大,画线语句就会出现溢出错误。
请问怎么在内部预防,不管外部给多大或者多小的点值,做到没有溢出报警,或者屏蔽掉溢出,谢谢
Line (0#, Point)-(ScaleWidth, Point), RGB(120, 120, 120)Point为外部定义的一个属性点
Public Property Get Point() As Single
PointSpt = sngPoint
End PropertyPublic Property Let Point(ByVal vNewValue As Single)
sngPoint = vNewValue
PropertyChanged "Point"
End Property当然sngPoint定义为内部点 Dim sngPoint As Single
我们无法预测外部属性点的值,如果外部给属性点的值过大,画线语句就会出现溢出错误。
请问怎么在内部预防,不管外部给多大或者多小的点值,做到没有溢出报警,或者屏蔽掉溢出,谢谢
在规定的画线范围内判断一下,超出画线范围内的点就禁止画线!
在上下Y轴上,如果上下画线区间为最小为10个象素(x1,0),(x2,10),或者1000个象素(x1,0),(x2,1000),如果计算出的点象素值位于10或者1000以内则没有问题,
如果超出一定范围也没有问题,如-2,12,在10以外,-100,1100在1000以外也没有问题,但范围超出多少则会有问题,应该怎么计算,
因为10,1000这个范围是不定的,那是随着ScaleHeight的变化而变化的,或者有的时候因需要自定义为非常小或者非常大范围,总之是变化的,谢谢
在画线单位是象素的时候,我输入Single类型的数据,我在放大的情况下,能看到因为有小数的存在,看到了线变化的效果请问在什么情况下,画线单位是Single呢,谢谢
Public Property Get Point() As Single
’PointSpt = sngPoint (之前笔误写错了,现在纠正下)
Point = sngPoint
End Property Public Property Let Point(ByVal vNewValue As Single)
sngPoint = vNewValue
PropertyChanged "Point"
End Property
If (0 <= Point) AND (Point <= ScaleHeight) Then
Line (0#, Point)-(ScaleWidth, Point), RGB(120, 120, 120)
End If
Me.ScaleMode = vbPixels
Me.AutoRedraw = True
Dim i As Long, y As Single
For i = 0 To 10
y = 10 ^ i
Debug.Print y
Me.Line (0, y)-(Me.ScaleWidth, y)
Next
End Sub
y = 10^8 时还没有出错。
你的坐标值怎么这么大!
你的测试是很能说明问题的,在实际的正常应用中,一般不会出现那么离谱的数据,
但因为我做好的控件是需要嵌入到其他的应用程序中去的,是需要读取其他的设备给的数据,然后进行画线绘图,
那种数据的大小和正确性是我无法预知的,经常性他们的数据源会出现问题,特别是在初期,也许会给过来特别大或者特别小的数据,
那我接受到这些数据的时候就会出现溢出问题,我想屏蔽掉或者说是避免掉这些溢出问题,也就是在用户使用中,看不到溢出报警
或者说是想办法对这些不正常的数据(特别大或者特别小)进行过滤或屏蔽,谢谢。
if vNewValue < -1 Then
sngPoint = -1
elseif vNewValue > 100000000 then
sngPoint = 100000000
else
sngPoint = vNewValue
end if
PropertyChanged "Point"
End Property
最好的办法就是找出windows这个画图区域缓冲区是多大,然后对输入画点的数据进行判断,不在这个区域内的话,画一个最大这个区域的
但是有什么方法可以找出这个确切的画图区域缓冲区