VB 画直线
请教高手个问题,VB如何才能使用代码来画直线呢,而且直线在屏幕上是随机出现的,并且直线的颜色也是随机的,这样的代码应该怎么写呀?最好是像有个笔在画一样....
请教高手个问题,VB如何才能使用代码来画直线呢,而且直线在屏幕上是随机出现的,并且直线的颜色也是随机的,这样的代码应该怎么写呀?最好是像有个笔在画一样.
展开
4个回答
展开全部
画直线
为了在两个坐标点之间画一条直线,可使用 Line 方法的简单形式,其语法如下:
[object.]Line [(x1, y1)]–(x2, y2)[, color]
其中 Object 是可选择的;若省略,此方法将在代码所连接的窗体(当前窗体)上画线。第一对坐标也是可选的。就所有的坐标值来说,x 和 y 参数都既可以是整数,也可以是分数。例如,下列语句可在窗体上画一条斜线。
Line (500, 500)–(2000, 2000)
Visual Basic 所画出的一条直线,要包括第一个端点,而不是最后一个端点。这种行为在从点到点画封闭曲线时是有用的。为了画最后一个端点,应使用这种语法:
PSet [Step] (0, 0)[, color]
第一对坐标 (x1, y1) 是可选的。如果省略这些坐标,将把该对象的 x,y 当前位置(画图坐标)作为端点。当前位置是由 CurrentX 和 CurrentY 属性指定的,然而在其它情况它会等于以前的图形方法或 Print 方法所画最后点的位置。如果以前没有使用过图形方法或 Print 方法,或没有设置 CurrentX 和 CurrentY 属性,则缺省位置为对象的左上角。
例如,以下语句通过三点连接画出一个三角形。
'设置起点的 x 坐标。
CurrentX = 1500
'设置起点的 y 坐标。
CurrentY = 500
'向起点的右下方画一直线。
Line -(3000, 2000)
'向当前点的左方画一直线。
Line -(1500, 2000)
'向右上方画一直线到起点。
Line -(1500, 500)
Blanker 应用程序使用 Line 方法创建出了一些有趣的图案样式。为了看到这些图案,可从“选项”菜单中,选定“Crossfire”,然后选定“Start Demo”按钮,即可看到。
Step 关键字
PSet、Line、和 Circle 方法使用以下语法可指定一个或多个点:
(x, y)
可在每个点之前加上 Step 关键字,用来指定要画出的点,是相对最后画出点的位置。Visual Basic 要将 x 和 y 的值加到最后所画的点上。例如,下边这条语句:
Line (100, 200)–(150, 250)
等价于:
Line (100, 200)–Step(50, 50)
在许多情况下,Step 关键字可免除持续不断地记录最后所画点位置的负担。经常最为关心的可能是两点的相对位置,而不是它们的绝对位置。
使用颜色参数
为了改变直线的颜色,应将可选的 color 参数与图形方法一起使用。例如,下述语句将画一条深蓝色的直线:
Line (500, 500)–(2000, 2000), RGB(0, 0, 255)
如果省略了 color 参数,将使用在其上画线的对象的 ForeColor 属性,来决定直线的颜色。
RND来设置随机值
为了在两个坐标点之间画一条直线,可使用 Line 方法的简单形式,其语法如下:
[object.]Line [(x1, y1)]–(x2, y2)[, color]
其中 Object 是可选择的;若省略,此方法将在代码所连接的窗体(当前窗体)上画线。第一对坐标也是可选的。就所有的坐标值来说,x 和 y 参数都既可以是整数,也可以是分数。例如,下列语句可在窗体上画一条斜线。
Line (500, 500)–(2000, 2000)
Visual Basic 所画出的一条直线,要包括第一个端点,而不是最后一个端点。这种行为在从点到点画封闭曲线时是有用的。为了画最后一个端点,应使用这种语法:
PSet [Step] (0, 0)[, color]
第一对坐标 (x1, y1) 是可选的。如果省略这些坐标,将把该对象的 x,y 当前位置(画图坐标)作为端点。当前位置是由 CurrentX 和 CurrentY 属性指定的,然而在其它情况它会等于以前的图形方法或 Print 方法所画最后点的位置。如果以前没有使用过图形方法或 Print 方法,或没有设置 CurrentX 和 CurrentY 属性,则缺省位置为对象的左上角。
例如,以下语句通过三点连接画出一个三角形。
'设置起点的 x 坐标。
CurrentX = 1500
'设置起点的 y 坐标。
CurrentY = 500
'向起点的右下方画一直线。
Line -(3000, 2000)
'向当前点的左方画一直线。
Line -(1500, 2000)
'向右上方画一直线到起点。
Line -(1500, 500)
Blanker 应用程序使用 Line 方法创建出了一些有趣的图案样式。为了看到这些图案,可从“选项”菜单中,选定“Crossfire”,然后选定“Start Demo”按钮,即可看到。
Step 关键字
PSet、Line、和 Circle 方法使用以下语法可指定一个或多个点:
(x, y)
可在每个点之前加上 Step 关键字,用来指定要画出的点,是相对最后画出点的位置。Visual Basic 要将 x 和 y 的值加到最后所画的点上。例如,下边这条语句:
Line (100, 200)–(150, 250)
等价于:
Line (100, 200)–Step(50, 50)
在许多情况下,Step 关键字可免除持续不断地记录最后所画点位置的负担。经常最为关心的可能是两点的相对位置,而不是它们的绝对位置。
使用颜色参数
为了改变直线的颜色,应将可选的 color 参数与图形方法一起使用。例如,下述语句将画一条深蓝色的直线:
Line (500, 500)–(2000, 2000), RGB(0, 0, 255)
如果省略了 color 参数,将使用在其上画线的对象的 ForeColor 属性,来决定直线的颜色。
RND来设置随机值
展开全部
楼上的你说的虽然很专业,但是我觉得楼主可能是个初学者,你的太多了,我就弄个简单的代码,点击窗口上的按钮就随机出现直线,代码如下:
Private Sub Command1_Click()
Line1.BorderColor = QBColor(Rnd(1) * 15)
Line1.X1 = Rnd(1) * 6000
Line1.X2 = Rnd(1) * 6000
Line1.Y1 = Rnd(1) * 5000
Line1.Y2 = Rnd(1) * 5000
End Sub
Private Sub Form_Load()
Form1.Width = 6500
Form1.Height = 5500
End Sub
Private Sub Command1_Click()
Line1.BorderColor = QBColor(Rnd(1) * 15)
Line1.X1 = Rnd(1) * 6000
Line1.X2 = Rnd(1) * 6000
Line1.Y1 = Rnd(1) * 5000
Line1.Y2 = Rnd(1) * 5000
End Sub
Private Sub Form_Load()
Form1.Width = 6500
Form1.Height = 5500
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VB API 屏幕画随机直线(整个显示器屏幕不是VB窗体)
Private Const PS_SOLID = 0
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpPoint As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private dw As Long
Private dh As Long
Private Sub Form_Load()
dw = Screen.Width \ Screen.TwipsPerPixelX
dh = Screen.Height \ Screen.TwipsPerPixelY
End Sub
Private Sub Command1_Click()
APIDrawLine
End Sub
Private Sub APIDrawLine()
Dim dhwnd As Long
Dim dhdc As Long
Dim hPen As Long
Dim hPenOld As Long
Dim x1 As Long
Dim y1 As Long
Dim x2 As Long
Dim y2 As Long
Dim r As Long
Dim g As Long
Dim b As Long
Dim linewidth As Long
Randomize
x1 = Int((dw + 1) * Rnd)
y1 = Int((dh + 1) * Rnd)
x2 = Int((dw + 1) * Rnd)
y2 = Int((dh + 1) * Rnd)
linewidth = Int(Rnd * 15 + 1) '线宽
dhwnd = GetDesktopWindow
dhdc = GetWindowDC(dhwnd)
hPen = CreatePen(PS_SOLID, linewidth, RGB(Int(256 * Rnd), Int(256 * Rnd), Int(256 * Rnd)))
hPenOld = SelectObject(dhdc, hPen)
MoveToEx dhdc, x1, y1, 0
LineTo dhdc, x2, y2
SelectObject dhdc, hPenOld
DeleteObject hPen
ReleaseDC dhwnd, dhdc
End Sub
Private Const PS_SOLID = 0
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpPoint As Long) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private dw As Long
Private dh As Long
Private Sub Form_Load()
dw = Screen.Width \ Screen.TwipsPerPixelX
dh = Screen.Height \ Screen.TwipsPerPixelY
End Sub
Private Sub Command1_Click()
APIDrawLine
End Sub
Private Sub APIDrawLine()
Dim dhwnd As Long
Dim dhdc As Long
Dim hPen As Long
Dim hPenOld As Long
Dim x1 As Long
Dim y1 As Long
Dim x2 As Long
Dim y2 As Long
Dim r As Long
Dim g As Long
Dim b As Long
Dim linewidth As Long
Randomize
x1 = Int((dw + 1) * Rnd)
y1 = Int((dh + 1) * Rnd)
x2 = Int((dw + 1) * Rnd)
y2 = Int((dh + 1) * Rnd)
linewidth = Int(Rnd * 15 + 1) '线宽
dhwnd = GetDesktopWindow
dhdc = GetWindowDC(dhwnd)
hPen = CreatePen(PS_SOLID, linewidth, RGB(Int(256 * Rnd), Int(256 * Rnd), Int(256 * Rnd)))
hPenOld = SelectObject(dhdc, hPen)
MoveToEx dhdc, x1, y1, 0
LineTo dhdc, x2, y2
SelectObject dhdc, hPenOld
DeleteObject hPen
ReleaseDC dhwnd, dhdc
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
帮你写了一个容易理解的代码,复制下面的代码到你的编辑器中,每次点击窗体就看到效果了哦...
Private Sub Form_Click()
Dim r As Integer, g As Integer, b As Integer
Dim x1 As Long, x2 As Long, y1 As Long, y2 As Long
Randomize
r = Rnd * 255: g = Rnd * 255: b = Rnd * 255
x1 = Rnd * Me.Width: x2 = Rnd * Me.Width
y1 = Rnd * Me.Height: y2 = Rnd * Me.Height
Cls
Me.Line (x1, y1)-(x2, y2), RGB(r, g, b)
End Sub
Private Sub Form_Click()
Dim r As Integer, g As Integer, b As Integer
Dim x1 As Long, x2 As Long, y1 As Long, y2 As Long
Randomize
r = Rnd * 255: g = Rnd * 255: b = Rnd * 255
x1 = Rnd * Me.Width: x2 = Rnd * Me.Width
y1 = Rnd * Me.Height: y2 = Rnd * Me.Height
Cls
Me.Line (x1, y1)-(x2, y2), RGB(r, g, b)
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询