开发环境:vs2010
目前使用方法:picturebox控件,长1000 ,宽500,地震数据为幅度在正负5v内的电压信号。由于picturebox长度最大为1000,当我的地震数据较大时(16384个数据点),picturebox就不能完全显示该图形曲线了,请问如何解决这个问题?
------解决方案--------------------
根据实际数据,找出最大最小值,然后根据绘图区域,折算成坐标,就是算比例
------解决方案--------------------
加一个水平滚动条,将下面 Debug.Print 部分更改为实际的 Draw 函数,对应的范围段也给出了。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.HScrollBar1.Maximum = 16384 - 1
Me.HScrollBar1.LargeChange = 1000
Me.HScrollBar1.Value = 0
Debug.Print("Draw(0,999)")
End Sub
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Debug.Print("Draw({0},{1})", e.NewValue, e.NewValue + 1000 - 1)
End Sub
------解决方案--------------------
把绘制部分单独做成函数。
Draw(0,999) 就是绘制 [0,999] 范围的点;
Draw(e.NewValue, e.NewValue + 1000 - 1)
就是绘制 [e.NewValue, e.NewValue + 1000 - 1] 范围的点。
------解决方案--------------------
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.HScrollBar1.Maximum = 16384 - 1 '总数 16384
Me.HScrollBar1.LargeChange = 1000 '滚动一页 1000,滚动一格默认为 1
Me.HScrollBar1.Value = 0 '最开始滚动条在最右侧
Draw(0,999) '所以初始显示 [0,999] 范围
End Sub
'如果点滑块右侧,一次滚动一页,e.NewValue = 1000
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Draw(e.NewValue, e.NewValue + 1000 - 1) '这时显示 [1000, 1999] 范围
End Sub
'如果点右箭头,一次滚动一格,e.NewValue = 1001
Private Sub HScrollBar1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
Draw(e.NewValue, e.NewValue + 1000 - 1) '这时显示 [1001, 2000] 范围
End Sub
哪里不合你的要求了?
代码又不写,光在拍脑袋猜,运行一下看效果会死啊?