创建一个rgn,只有一条线,然后用ptinrgn,hoho。
说正经的,判断一点在线上很简单啊,如果你知道线的数学描述。

解决方案 »

  1.   

    直线函数是y=kx+b将点坐标(x,y)代进去,函数两边相等就对了!
      

  2.   

    BigBen(江南草):线的数学描述是哪种数学书上有讲,我只是职业中专毕业,对这个没有印象。
      

  3.   

    假直线的两个坐标是(X1, Y1), (X2, Y2),如何判断(X3, Y3)在直线上。
      

  4.   

    y=kx+b
    if y3=kx3+b then the point is on the line!
      

  5.   

    对拉,不就是求这个k嘛(k:=(y2-y1)/(x2-x1)
    如果是曲线,也可以用数学公式模拟出来的。
      

  6.   

    谢谢大家的帮忙,不过数学我早就忘光了,95年初中毕业,98年职专毕业。
    y=kx+b,
    根据江南草的公式算出K,但那个b代表什么东西呀,能不能详细一点。
      

  7.   

    Option ExplicitPrivate Sub Form_Load()
        Text1.Text = 100
        Text2.Text = 100
    End SubPrivate Sub Command1_Click()
    '假直线的两个坐标是(X1, Y1), (X2, Y2),如何判断(X3, Y3)在直线上。
    Dim X1 As Single, Y1 As Single, X2 As Single, Y2 As Single
    Dim X3 As Single, Y3 As Single
    X1 = 2000
    Y1 = 2000
    X2 = 4000
    Y2 = 4000
    X3 = Val(Text1.Text)
    Y3 = Val(Text2.Text)If (X1 = X2 And X2 = X3) Or (Y1 = Y2 And Y2 = Y3) Then
        Line (X1, Y1)-(X2, Y2)
        Line -(X3, Y3)
    ElseIf Y3 = (Y2 - Y1) / (X2 - X1) * (X3 - X1) + Y1 Then
        Line (X1, Y1)-(X2, Y2)
        Line -(X3, Y3)
    Else
        Line (X1, Y1)-(X2, Y2)
        DrawWidth = 3
        PSet (X3, Y3)
        DrawWidth = 1
        MsgBox "NO"
    End IfEnd Sub
      

  8.   

    Option ExplicitPrivate Sub Form_Load()
        Text1.Text = 100 'X3 = Val(Text1.Text)
        Text2.Text = 2000 'Y3 = Val(Text2.Text)
    End SubPrivate Sub Command1_Click()
    '假直线的两个坐标是(X1, Y1), (X2, Y2),如何判断(X3, Y3)在直线上。
    Dim X1 As Single, Y1 As Single, X2 As Single, Y2 As Single
    Dim X3 As Single, Y3 As Single
        X1 = 2000
        Y1 = 2000
        X2 = 4000
        Y2 = 2000
        X3 = Val(Text1.Text)
        Y3 = Val(Text2.Text)    If (X1 = X2 And X2 = X3) Then '如果斜率无穷大
            Line (X1, Y1)-(X2, Y2)
            Line -(X3, Y3)
            MsgBox "Yes"
        ElseIf Y3 = (Y2 - Y1) / (X2 - X1) * (X3 - X1) + Y1 Then
            Line (X1, Y1)-(X2, Y2)
            Line -(X3, Y3)
            MsgBox "Yes"
        Else '不在直线上
            Line (X1, Y1)-(X2, Y2)
            DrawWidth = 3
            PSet (X3, Y3)
            DrawWidth = 1
            MsgBox "NO"
        End If
        
    End Sub
      

  9.   

    Y3 = (Y2 - Y1) / (X2 - X1) * (X3 - X1) + Y1
      

  10.   


    Y = (Y2 - Y1) / (X2 - X1) * (X - X1) + Y1
      

  11.   

    Option ExplicitPrivate Sub Form_Load()
        Text1.Text = 100 'X3 = Val(Text1.Text)
        Text2.Text = 2000 'Y3 = Val(Text2.Text)
    End SubPrivate Sub Command1_Click()
    '假直线的两个坐标是(X1, Y1), (X2, Y2),如何判断(X3, Y3)在直线上。
    Dim X1 As Single, Y1 As Single, X2 As Single, Y2 As Single
    Dim X3 As Single, Y3 As Single
        X1 = 2000
        Y1 = 100
        X2 = 2000
        Y2 = 4000
        X3 = Val(Text1.Text)
        Y3 = Val(Text2.Text)    If X1 = X2 Then   '如果斜率无穷大
            If X2 = X3 Then '在线上
                Line (X1, Y1)-(X2, Y2)
                Line -(X3, Y3)
                MsgBox "Yes"
            Else '不在直线上
                Line (X1, Y1)-(X2, Y2)
                DrawWidth = 3
                PSet (X3, Y3)
                DrawWidth = 1
                MsgBox "NO"
            End If
        Else
            If Y3 = (Y2 - Y1) / (X2 - X1) * (X3 - X1) + Y1 Then
                Line (X1, Y1)-(X2, Y2)
                Line -(X3, Y3)
                MsgBox "Yes"
            Else '不在直线上
                Line (X1, Y1)-(X2, Y2)
                DrawWidth = 3
                PSet (X3, Y3)
                DrawWidth = 1
                MsgBox "NO"
            End If
        End If
    End Sub
      

  12.   

    靠,我服了。居然连这都不知道,太失败了。初中生都应该知道,开来这位光搞些DataBase,API之类的了,在中国这么强的应试教育下居然还能出这样的人,难得,难得...
      

  13.   

    to:wisenowa(您还没有登陆,您没有发言权) 
    不要这样 忘记了总是难免的
    你说 文科毕业的很多人 解析几何 能记住多少啊 
    何必都要懂能?有一门通点就可以了
    其他的会问、会查就可以了
      

  14.   

    b=Y1-(Y2 - Y1) / (X2 - X1) * X1
      

  15.   

    b=Y1-(Y2 - Y1) / (X2 - X1) * X1
      

  16.   

    都他吗胡继八扯淡!
    谁要是单凭 y=kx+b就能判断出来老子从 13楼作自由落体!
      

  17.   

    to  kestrel(小嘉) 你不会这么做呀y=k(x+delta)+b 
    and 
    y=k(x-delta)+b其中delta为你所要的精度,是一个像素或几个象素,看你自己把握,自己好好考虑一下,也许不不符合要求,但思路是正确