回 帖 发 新 帖 刷新版面

主题:VB绘制双对数坐标图

请各位大侠帮忙指点一下怎样用vb6.0绘制双对数坐标图。谢谢啊  [em19]

回复列表 (共6个回复)

沙发

我自己编了一个,但是觉得有问题。代码是这样的:
Private Sub Form_Resize()
Cls
Me.AutoRedraw = True
Dim mi As Integer
mi = 0
On Error Resume Next
Form1.Scale (-0.5, 2.5)-(3.5, -0.5) '四个数不一样,可以对照着结果看scale的用法,如果把四个数用form1的width和height替换下来,新坐标就不扭曲了。


Form1.Line (0, 0)-(3, 0) '画横坐标
For i = 0 To 3
Form1.Line (i, 0)-(i, 0.1)  '标横坐标刻度
   Print 10 ^ mi
   mi = mi + 1
   If mi > 3 Then
   Exit For
   End If
Next
Form1.Line (0, 0)-(0, 2) '画纵坐标
Dim mi2 As Integer
mi2 = 0
For i = 0 To 2
Form1.Line (0, i)-(0.1, i) '标纵坐标刻度
Print 10 ^ mi2
mi2 = mi2 + 1
Next
End Sub
'请各位大侠给指点以下。

板凳

说实话,从结果上看,似乎没有错误(究竟有没有?你运行一下就见分晓)。但是以下几点我的意见应如下处理:

第一个问题:
for……next循环是不需要你用代码来改变循环变量的,也不需要你自己检测变量是否到达终值。basic语言自动处理这些。
第二个问题:
for……next 循环中,无需使用与循环变量密切相关的其它变量,而只需要对循环变量稍作计算,就可以了。
第三个问题:
10^mi就是你的坐标轴刻度,完全不应该让计算机作这么巨大的运算,而改用1后面补充mi个0的方法会提高效率。

综上,代码可以修改如下(当然,你的代码仅仅是绘制坐标轴,其它的代码暂且不说):
Private Sub Form_Resize()
    Cls
    Me.AutoRedraw = True
    Dim mi As Integer
    Me.Scale (-0.5, 2.5)-(3.5, -0.5) '四个角坐标本来可以自动根据数据设定,这里暂且沿用你的设定值
    Line (0, 0)-(3, 0) '画横坐标
    Line (0, 0)-(0, 2) '画纵坐标
    For mi = 0 To 3
        Line (i, 0)-(i, 0.1)  '标横坐标刻度
        Print 1;string("0",mi)
        if mi<3 then
            Line (0, i)-(0.1, i) '标纵坐标刻度
            Print 1;string("0",mi)
        endif
    Next
End Sub

3 楼


谢谢啊,小弟不胜感激。

4 楼

完全不一样的思路,开眼界了。谢谢谢谢。

5 楼

我运行了一下,有些问题。不过思路比我的好多了:我修改了一下:
Private Sub Form_Resize()
    Cls
    Me.AutoRedraw = True
    Dim mi As Integer
    Me.Scale (-0.5, 2.5)-(3.5, -0.5) '四个角坐标本来可以自动根据数据设定,这里暂且沿用你的设定值
    Line (0, 0)-(3, 0) '画横坐标
    Line (0, 0)-(0, 2) '画纵坐标
    For mi = 0 To 3
        Line (mi, 0)-(mi, 0.1)  '标横坐标刻度
        Print 1 & String(mi, "0")
        If mi < 3 Then
            Line (0, mi)-(0.1, mi) '标纵坐标刻度
            Print 1 & String(mi, "0")
        End If
    Next
End Sub

6 楼

恩。string函数的参数顺序我记错了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册