折线程序运行问题?
第7章_数据实时曲线的绘制与滚动显示_无背景图滚动显示.rar
(11.11 KB)
这段程序是VIUSAL BASIC串口通信及编程实例其中一章节的示例程序,
但我发现运行时折线绘制到右边界时就有问题,会出现离散的点。如下图所示
代码我看了好几遍,没发现什么问题,请哪位帮忙解答下,谢谢!
Private Sub TmrTriger_Timer() dateNowTime = Now() '记录当前时刻 longSecond = DateDiff("s", dateStartTime, dateNowTime) - 1 '计算当前时刻与计数开始时刻的时间差(秒) cy = 0.1 * Pic1.ScaleHeight + Rnd * 0.8 * Pic1.ScaleHeight '计算当前时刻在图中对应像素的横坐标x值 If longSecond <= intNum Then cx = intInterval * longSecond '计算当前时刻对应图中像素的横坐标x值 If longSecond = 0 Then Pic1.PSet (cx, cy), Pic1.ForeColor '以前景色画第一个点 End If If longSecond > 0 Then Pic1.Line (lx, ly)-(cx, cy), Pic1.ForeColor '以前景色将当前点与上一点连在一起 End If If longSecond = intNum - 1 Then llx = cx '将当前点保存为上二点,用于重画后更新 lly = cy End If Else BitBlt Pic1.hDC, Pic1.ScaleLeft, Pic1.ScaleTop, Pic1.ScaleWidth - intInterval, Pic1.ScaleHeight, Pic1.hDC, intInterval, 0, &HCC0020 '将窗口右端部分区域拷贝至左端,右端用于重画区 Pic1.Line (Pic1.ScaleWidth - intInterval, 0)-(Pic1.ScaleWidth, Pic1.ScaleHeight), Pic1.BackColor, BF Pic1.Line (Pic1.ScaleWidth - intInterval, ly)-(Pic1.ScaleWidth - 1, cy), Pic1.ForeColor Pic1.Refresh '更新显示窗口 llx = Pic1.ScaleWidth - intInterval '设置上二点X值坐标 lly = ly '设置上二点Y值坐标 End If If longSecond <= intNum Then '如果时间秒数低于窗口显示上限值,则将像素当前X、Y值赋给上一点 lx = cx ly = cy Else ly = cy '如果时间秒数高于窗口显示上限值,则只将像素当前Y值赋给上一点 End If End Sub