| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 374 人关注过本帖
标题:我再picturebox里画一样的曲线,为什么只显示最后一条
只看楼主 加入收藏
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
我再picturebox里画一样的曲线,为什么只显示最后一条
   
我定义了一个数组,供320个元素,每行20个元素。Text6 存储X轴坐标,text2储存数据
我把每行的数据在同一个picturebox里画曲线,为什么每行数据都一样时,只能显示最后一行的曲线,其他显示不了,求大师。
For i = 0 To 318 Step 1

        If i < 19 Then
        
                     x = (Val(Form1.Text6(i).Text))
                     XX = (Val(Form1.Text6(i + 1).Text))
                                                                     
                     y = (Val(Form1.text2(i).Text))
                     YY = (Val(Form1.text2(i + 1).Text))
                     If Form1.Check1.Value = 1 Then
                         Form1.Picture_tps.Line (x, y)-(XX, YY), vbRed '红色
                     Else
                         Form1.Picture_tps.Line (x, y)-(XX, YY), vbBlack
                     End If
        End If
        
        If (19 < i And i < 39) Then
        
                     x = (Val(Form1.Text6(i - 20).Text))
                     XX = (Val(Form1.Text6(i + 1 - 20).Text))
                                                                     
                     y = (Val(Form1.text2(i).Text))
                     YY = (Val(Form1.text2(i + 1).Text))
                     If Form1.Check2.Value = 1 Then
                         Form1.Picture_tps.Line (x, y)-(XX, YY), vbYellow '黄色
                     Else
                         Form1.Picture_tps.Line (x, y)-(XX, YY), vbBlack
                     End If









Next i

        End If
搜索更多相关主题的帖子: 元素 
2013-07-30 21:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4943
专家分:30067
注 册:2008-10-15
收藏
得分:20 
看代码没大问题,
最后一个 的 next i 和 end if 写反位置了。

我测试的结果是所有的线都出来了。这个测试好烦。太多了控件。

程序代码:
Option Explicit

Private Sub Command1_Click()             '绘线

Dim i As Long
Dim x As Long, xx As Long
Dim y As Long, yy As Long

For i = 0 To 318 Step 1

        If i < 19 Then
        
                     x = (Val(Form1.Text6(i).Text))
                     xx = (Val(Form1.Text6(i + 1).Text))
                                                                      
                     y = (Val(Form1.Text2(i).Text))
                     yy = (Val(Form1.Text2(i + 1).Text))
                     If Form1.Check1.Value = 1 Then
                         Form1.Picture_tps.Line (x, y)-(xx, yy), vbRed '红色
                     Else
                         Form1.Picture_tps.Line (x, y)-(xx, yy), vbBlack
                     End If
        End If
        
        If (19 < i And i < 39) Then
        
                     x = (Val(Form1.Text6(i - 20).Text))
                     xx = (Val(Form1.Text6(i + 1 - 20).Text))
                                                                      
                     y = (Val(Form1.Text2(i).Text))
                     yy = (Val(Form1.Text2(i + 1).Text))
                     If Form1.Check2.Value = 1 Then
                         Form1.Picture_tps.Line (x, y)-(xx, yy), vbYellow '黄色
                     Else
                         Form1.Picture_tps.Line (x, y)-(xx, yy), vbBlack
                     End If
        End If

Next i

End Sub

Private Sub Command2_Click()      '增加 text 控件

If Text6.Count < 319 Then
Dim i As Long

Text6(0).Move 120, 120, 255, 270
Text2(0).Move 5400, 120, 255, 270

For i = 1 To 319
    Load Text6(i)
    With Text6(i)
        .Top = 120 + (i \ 20) * 270
        .Left = 120 + (i Mod 20) * 255
        .Height = 270
        .Width = 255
        .Text = i
        .Visible = -True
    End With

    Load Text2(i)
    With Text2(i)
        .Top = 120 + (i \ 20) * 270
        .Left = 5400 + (i Mod 20) * 255
        .Height = 270
        .Width = 255
        .Text = i
        .Visible = -True
    End With

Next i
End If
End Sub

Private Sub Command3_Click()       '产生随机数据
Dim i As Long
For i = 0 To 319
    Text6(i).Text = Rnd() * 900
    Text2(i).Text = Rnd() * 900
Next i
End Sub

授人于鱼,不如授人于渔
早已停用QQ了
2013-07-31 10:54
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
收藏
得分:0 
回复 2楼 风吹过b
每行数据都是一样的吗? 我的每行数据都是一样的,相当于画16条一样的曲线。
2013-08-01 11:38
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
收藏
得分:0 
回复 2楼 风吹过b
例如x轴为 (0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95)  共20个点
共5条曲线   (0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95) '红色
            (0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95)'蓝色
            (0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95)'绿色
            (0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95)'白色
            (0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95)'黄色

每行画一条曲线。 在同一个picturebox里画出来。 现在遇到的问题就是只能显示最后一条, 单步调试每条都能画出来,但函数运行完就只能显示画的最后一条。前面都覆盖了似的。

会有5个check1 来选择是否显示画的图,如果选择不显示就画成黑色线,和背景一样。  不是再同一个像素里画就能显示出来, 意思就是5条不重合的曲线就能都显示画出来。
代码和我前面贴出来的类似。
求解决,弄头疼我了。


2013-08-01 20:37
wolf死神
Rank: 2
等 级:论坛游民
帖 子:25
专家分:27
注 册:2011-3-22
收藏
得分:0 
查到原因是,是因为画的黑线屏蔽了其他颜色的线。 感谢楼上能花时间测试下。
2013-08-03 15:35
快速回复:我再picturebox里画一样的曲线,为什么只显示最后一条
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020476 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved