Line方法是怎么实现的?

yachong 2008-07-28 12:29:43
Private Sub Command1_Click()
Me.Line (100, 200)-(1000, 1500)
End Sub
Line方法的参数,可以用减号连接两个坐标,而且包含了括号、逗号等
自己实现一个同样的Line方法怎么弄?
想不明白
...全文
205 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
BreezeDust 2008-10-11
  • 打赏
  • 举报
回复
肯定是用pest画点的塞!反正是个库函数了
iget 2008-07-28
  • 打赏
  • 举报
回复
我想楼主的意思是怎么实现一个函数,接受参数的格式像line这样与众不同。
老实说,我这里无解。
zhufenghappy 2008-07-28
  • 打赏
  • 举报
回复
Line 方法示例
这个示例用 Line 方法在窗体上画了几个同心矩形。要运行这个示例,将此代码放入窗体的 General 部分。按 F5 并单击窗体。

Sub Form_Click ()
Dim CX, CY, F, F1, F2, I ' 声明变量。
ScaleMode = 3 ' 设置 ScaleMode 为像素。
CX = ScaleWidth / 2 ' 水平中点。
CY = ScaleHeight / 2 ' 垂直中点。
DrawWidth = 8 ' 设置 DrawWidth。
For I = 50 To 0 Step -2
F = I / 50 ' 执行中间步骤。
F1 = 1 - F: F2 = 1 + F ' 计算。
Forecolor = QBColor(I Mod 15) ' 设置前景颜色。
Line (CX * F1, CY * F1)-(CX * F2, CY * F2), , BF
Next I
DoEvents ' 做其它处理。
If CY > CX Then ' 设置 DrawWidth。
DrawWidth = ScaleWidth / 25
Else
DrawWidth = ScaleHeight / 25
End If
For I = 0 To 50 Step 2 ' Set up loop.
F = I / 50 ' 执行中间。
F1 = 1 - F: F2 = 1 + F ' 计算。
Line (CX * F1, CY)-(CX, CY * F1) ' 画左上角。
Line -(CX * F2, CY) ' 画右上角。
Line -(CX, CY * F2) ' 画右下角。
Line -(CX * F1, CY) ' 画左下角。
Forecolor = QBColor(I Mod 15) ' 每次改变颜色。
Next I
DoEvents ' 进行其它处理。
End Sub
yachong 2008-07-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 WallesCai 的回复:]
象(100, 200)-(1000, 1500)这样的参数也并没有什么特殊之处,
应该是当作一个参数整体传入,然后在函数内部拆解为两个坐标值.
[/Quote]
如果是一个字符串,当然没有什么特殊的,问题是它不是字符串
倒退不倒退谈不上,只是想明白怎么弄
熊孩子开学喽 2008-07-28
  • 打赏
  • 举报
回复
而且这种"特殊"的参数一点也没什么"优越性"可言,非常破坏函数的接口一致性和可维护性.要自己模仿这种写法做函数接口是一种倒退的做法.
熊孩子开学喽 2008-07-28
  • 打赏
  • 举报
回复
象(100, 200)-(1000, 1500)这样的参数也并没有什么特殊之处,
应该是当作一个参数整体传入,然后在函数内部拆解为两个坐标值.
yachong 2008-07-28
  • 打赏
  • 举报
回复
我是想弄明白怎么实现这种特殊参数
熊孩子开学喽 2008-07-28
  • 打赏
  • 举报
回复
楼主没说明白,你到底是准备自己封装一个接口更简便的函数呢,还是准备自己手工实现一个画直线的函数呢?
fj182 2008-07-28
  • 打赏
  • 举报
回复
是的,QBASIC中的语法VB大多数都兼容的。
yachong 2008-07-28
  • 打赏
  • 举报
回复
baidu了一下,QBASIC这么写
CLS
SCREEN 9: COLOR 3
LINE (50, 20)-(500, 300), 4, B
LINE (500, 20)-(50, 300), 0, B
END
语法跟VB的一模一样
yachong 2008-07-28
  • 打赏
  • 举报
回复
没学过BASIC,不知道在BASIC中Line是不是一个语句
也许VB为了继承BASIC的Print/Line搞了这么个奇怪的东东吧
猜测,没有证据
fvflove 2008-07-28
  • 打赏
  • 举报
回复
[CODE=VB]
'也可以写出这样的。

sub cLine(byval Parameters as string)
'规定 Parameters 参数 的语法与上面相同就可以了。
'比如 必须也只能有一个 "-" 号
dim A() as string

A=split(Parameters,"-")

if UBound(A)=1 then '这样就保证只有一个 "-"
'再对 A(0) 与 A(1) 进行分析
end if
end sub
[/CODE]
_l_ 2008-07-28
  • 打赏
  • 举报
回复
写语句不会 我们只能 写写函数

Private Sub DrawKLine(picBroad As PictureBox, CurJL As Long, ts As Long, maxhigh As Double, minlow As Double)
'画K线
Dim DrawColor As Long
Dim i As Long
Dim MaxJL As Long

picBroad.Cls
picBroad.Scale
If CurJL + ts > UBound(hq) Then
MaxJL = UBound(hq)
Else
MaxJL = CurJL + ts
End If

picBroad.Scale (CurJL, maxhigh)-(CurJL + ts + 1, minlow)
For i = CurJL To MaxJL
If hq(i).spj > hq(i).kpj Then
DrawColor = QBColor(12)
ElseIf hq(i).spj < hq(i).kpj Then
DrawColor = QBColor(10)
Else
DrawColor = QBColor(15)
End If
picBroad.Line (i + 0.2, hq(i).kpj)-(i + 0.8, hq(i).spj), DrawColor, BF
picBroad.Line (i + 0.5, hq(i).zgj)-(i + 0.5, hq(i).zdj), DrawColor
Next
End Sub
Tiger_Zhao 2008-07-28
  • 打赏
  • 举报
回复
同意5楼,其实是号称方法的特殊语句,在 MSDN 中看 Line、Circle 的帮助,最后都注明了
  这个方法不能用于 With...End With 语句块。
这也说明了它不是普通的方法。
fj182 2008-07-28
  • 打赏
  • 举报
回复
当然你自己不能写出这种东西,只能写函数、Sub等等。
你可以写出这种样式的Line函数
Sub Line (byval x1 as long,byval y1 as long,byval x2 as long,byval y2 as long ...)
fj182 2008-07-28
  • 打赏
  • 举报
回复
我觉得Line、Name、Open File As等这类方法属于语句(Statements)而不是函数,是开发工具本身提供支持的东西,特定的开发工具都有类似的东西。
当然MSDN上不这么分类。
yachong 2008-07-28
  • 打赏
  • 举报
回复
自己顶
happy_sea 2008-07-28
  • 打赏
  • 举报
回复
哦,看错题意了,不好意思。
happy_sea 2008-07-28
  • 打赏
  • 举报
回复
用pset画点
TripH0101 2008-07-28
  • 打赏
  • 举报
回复
帮顶一下

7,763

社区成员

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

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