利用LINE命令画矩形的问题。

lufeng112 2011-07-12 11:15:57
本人是一个初学者,看到书中有如下代码,是利用line命令画矩形的。
Dim xp1 As Single, yp1 As Single
Dim xp2 As Single, yp2 As Single
Dim drawing As Boolean 'boolean表示布尔型变量(只有True(真)和False(假)两种值)

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not drawing Then
xp1 = X: yp1 = Y
xp2 = X: yp2 = Y
drawing = True
End If

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If drawing Then
DrawStyle = 2
DrawMode = vbInvert

Line (xp1, yp1)-(xp2, yp2), , B
Line (xp1, yp1)-(X, Y), , B
xp2 = X: yp2 = Y
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If drawing Then
DrawMode = vbBlackness
DrawStyle = 0
Line (xp1, yp1)-(X, Y), , B
drawing = False
End If

End Sub

我想问一下,各位高手。 一、为什么要添加DrawMode = vbInvert
二、Line (xp1, yp1)-(xp2, yp2), , B
Line (xp1, yp1)-(X, Y), , B
为什么写两次矩形框的代码?
小弟实在搞不懂,望各位高手不惜赐教!谢谢

...全文
435 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
几罗星人 2011-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 veron_04 的回复:]
画矩形?为什么不用 Rectangle?

Private Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
[/Quote]
同意此条答复。
lufeng112 2011-07-13
  • 打赏
  • 举报
回复
ByVal是传递值的意思吗,如果是字符,是否就是传递字符的意思?贝隆哥,求解
lufeng112 2011-07-13
  • 打赏
  • 举报
回复
Tiger_Zhao
谢谢你了,嗯搞懂了。谢谢,当然也感谢回复我帖子的人。
贝隆 2011-07-13
  • 打赏
  • 举报
回复
画矩形?为什么不用 Rectangle?

Private Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
熊孩子开学喽 2011-07-13
  • 打赏
  • 举报
回复
既然发在水版,只好灌水回复啦.
Tiger_Zhao 2011-07-13
  • 打赏
  • 举报
回复
DrawMode = vbInvert 表示每画一次就是将图形上的每个像素进行反色,两次反色正好抵消。所以在这个模式下相同的图形画一次为显示图形,再画一次等于擦除(取消)图形。

Line (xp1, yp1)-(xp2, yp2), , B '将上次的坐标图形画第二次,等于擦除Line (xp1, yp1)-(X, Y), , B '用新的坐标画第一次
xp2 = X: yp2 = Y '记录新坐标,用于下次擦除
lufeng112 2011-07-13
  • 打赏
  • 举报
回复
line命令后面加了B的是表示利用左上角和右下角的坐标来画矩形。
caozhy还是谢谢你,关于你最后的“Line每次只能画一条线,要画矩形需要画出4条线。”是否有点牵强了??
threenewbee 2011-07-12
  • 打赏
  • 举报
回复
DrawMode = vbInvert '用反色笔画,便于擦除

Line每次只能画一条线,要画矩形需要画出4条线。
lufeng112 2011-07-12
  • 打赏
  • 举报
回复
请大家一定帮帮我啊,大家都来说说。在这里小弟先谢谢大家了

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧