图片附件: 游客没有浏览图片的权限,请
登录 或
注册
你程序设计的有问题,首先Print X 完全没必要,在就是判断格子坐标不需要在循环中,我的程序如下,请参考:
首先启动vb,新建一标准exe工程,拷贝下列代码,运行即可(你可以画格子和取消格子)
Const 间距 = 300
Const 格子数 = 19
'你的程序是21根线,我画的是围棋盘,是19根线
Const 起点纵坐标 = 210
Const 起点横坐标 = 210
Dim 格子状态(格子数 - 1, 格子数 - 1) '存储格子是否被填充颜色的状态,0:没有被填充,1:已被填充
Private Sub Form_Load()
'画格子
Dim i As Integer, j As Integer
Me.Height = 6300
Me.Width = 6000
Me.AutoRedraw = True
For i = 0 To 格子数 - 1
For j = 0 To 格子数 - 1
格子状态(i, j) = 0
'将所有格子状态还原为未被填充的状态
Next
Next
For i = 0 To 格子数 - 1
Me.Line (起点横坐标, 起点纵坐标 + i * 间距)-(起点横坐标 + (格子数 - 1) * 间距, 起点纵坐标 + i * 间距), QBColor(0) '画横线
Next
For i = 0 To 格子数 - 1
Me.Line (起点横坐标 + i * 间距, 起点纵坐标)-(起点横坐标 + i * 间距, 起点纵坐标 + (格子数 - 1) * 间距), QBColor(0) '画竖线
Next
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
'填充棋盘格子
Dim i As Integer, j As Integer
If Button = 1 Then
'如果按下的是鼠标左键则执行填充操作
i = Int((X - 起点横坐标) / 间距)
'获取格子横坐标
j = Int((Y - 起点纵坐标) / 间距)
'获取格子纵坐标
If i < 格子数 - 1 And j < 格子数 - 1 Then
'如果点击的是在格子内则进行填充操作
格子状态(i, j) = 格子状态(i, j) Xor 1 '设置格子状态
If 格子状态(i, j) = 1 Then
'填充蓝色
Me.Line (起点横坐标 + i * 间距 + 15, 起点纵坐标 + j * 间距 + 15)-(起点横坐标 + (i + 1) * 间距 - 15, 起点纵坐标 + (j + 1) * 间距 - 15), &HFF0000, BF
Else
Me.Line (起点横坐标 + i * 间距 + 15, 起点纵坐标 + j * 间距 + 15)-(起点横坐标 + (i + 1) * 间距 - 15, 起点纵坐标 + (j + 1) * 间距 - 15), Me.BackColor, BF
End If
End If
End If
End Sub