vb.net 有一个功能实现的不理想 但不知道怎么解决掉

我想在groupBox中生成10跳线,其中已经先画出了一条,然后根据这条通过for循环生出其他的线,但是循环后只出来一条线DimstartLineYAsInteger=L... 我想在groupBox中生成10跳线 ,其中已经先画出了一条,然后根据这条通过for循环生出其他的线,但是循环后只出来一条线

Dim startLineY As Integer = LineShape2.StartPoint.Y '获取当前横线的起始Y坐标
Dim endLineY As Integer = LineShape2.EndPoint.Y '获取当前横线的终点Y坐标
Dim startLineX As Integer = LineShape2.StartPoint.X
Dim endLineX As Integer = LineShape2.EndPoint.X
Dim lineNum As Integer
Dim sctr As New ShapeContainer
For lineNum = 0 To 10
Dim line As New PowerPacks.LineShape(sctr)
line.Y1 = line.Y1 + (startLineY + 20)
line.X1 = startLineX
line.Y2 = line.Y2 + (endLineY + 20)
line.X2 = endLineX
GroupBox1.Controls.Add(sctr)
Next

我尝试把Dim sctr As New ShapeContainer放到for循环的里面 ,这样每循环一次就会新生成一个sctr对象,但还是不行。问题到底出到哪里了呢,应该怎么解决呢 。
展开
 我来答
风中的奶牛
2013-09-29 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:82
采纳率:0%
帮助的人:113万
展开全部

因为你循环里面的坐标点一直没改变,线都画在了同一个坐标点,看起来就只有一条了!你每次循环,都要在循环内改变新的坐标点,把线画在不同的地方。例如下面的演示代码:在GroupBox1上连续划横线,横线的高度距离为20(h),超出GroupBox1的高度范围后循环退出,停止划线。另外,GroupBox1.Controls.Add(sc)应该放在循环外面,昨晚忘记改了!

Dim sc As New ShapeContainer
Dim ps As LineShape, h As Integer = 20
For i As Integer = 1 To (GroupBox1.Height \ h)
    ps = New LineShape(sc)
    ps.Y1 = h * i : ps.X1 = 0
    ps.Y2 = ps.Y1 : ps.X2 = GroupBox1.ClientSize.Width - 8
Next
GroupBox1.Controls.Add(sc)

满以柳J7
2013-09-29 · TA获得超过539个赞
知道小有建树答主
回答量:545
采纳率:66%
帮助的人:552万
展开全部
在你的For .... Next循环里面没有体现变量lineNum参加的任何运算,
在循环中的所有语句都是赋予了固定的值,所以就只能画一条线了!
应该改变画直线的坐标值:
例如:line.Y1=line.Y1+startLineY+20*lineNum
...
这样才能体现你的变量lineNum参与了运算
具体的坐标值只有你自己根据情况写运算式了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式