十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
不是已经回答了吗?
我们提供的服务有:做网站、网站设计、微信公众号开发、网站优化、网站认证、海南州ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的海南州网站制作公司
运行界面如下图:
在对应的文本框里输入对应的坐标值,单击【计算】,结果将显示在下面一个文本框里,完整代码如下:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x2, y2, x3, y3, x4, y4, x5, y5 As Single
Dim L As Single
x2 = Val(TextBox2.Text)
y2 = Val(TextBox3.Text)
x3 = Val(TextBox4.Text)
y3 = Val(TextBox5.Text)
x4 = Val(TextBox6.Text)
y4 = Val(TextBox7.Text)
'求点P3(x3,y3)与点P4(x4,y4)的直线方程;
'(X-x4)/(x3-x4) = (Y-y4)/(y3-y4) ......(1)
'求过点P2(x2,y2)的水平直线方程为;
'Y = y2 ......(2)
'方程(1)(2) 联立可以求出两条直线的交点(x5,y5)
'由此得到交点坐标为:
x5 = (y2 - y3) * (x4 - x3) / (y4 - y3) + x3
y5 = y2
'求点P2(x2,y2)与点P5(x5,y5)之间的距离
'根据两点之间距离公式有;
L = ((x2 - x5) ^ 2 + (y2 - y5) ^ 2) ^ 0.5
TextBox1.Text = L
End Sub
End Class
通过窗体的MouseDown事件的e.X和e.Y属性获取。通过e.Location属性获取Point类型的坐标。
下面的代码示例使用 Location 属性跟踪鼠标左键单击,并绘制一系列直线段作为对用户输入的响应。如果隐藏窗体然后重新显示它,此示例不保留已绘制的线段,该代码为简单起见而被省略了。
Dim FirstPoint As Point
Dim HaveFirstPoint As Boolean = False
Sub Form1_MouseDownDrawing(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If HaveFirstPoint Then
Dim g As Graphics = Me.CreateGraphics()
g.DrawLine(Pens.Black, FirstPoint, e.Location)
HaveFirstPoint = False
Else
FirstPoint = e.Location
HaveFirstPoint = True
End If
End Sub
代码就不写了,给你思路,默认左上角是原点,所以x的位置=窗口高度-y.
这样就获得xy
复杂点的办法是重写绘制,绘制十字,
简单点的办法就是十字放到picbox或者image里,然后取中,然后隐藏,确定按钮点击显示,中心位置等于坐标点,然后换算左上角控件位置,然后设置坐标.
Private Declare Function GetCursorPos Lib "user32" (ByRef lpPoint As POINTAPI) As Long '全屏坐标声明
Private Declare Function ScreenToClient Lib "user32.dll" (ByVal hwnd As Int32, ByRef lpPoint As POINTAPI) As Int32 '窗口坐标声明
Private Structure POINTAPI '声明坐标变量
Public x As Int32 '声明坐标变量为32位
Public y As Int32 '声明坐标变量为32位
End Structure
'以上是声明部分
'以下是窗口部分
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '用时钟控件来取坐标,窗口上放个Timer组件,Enabled为允许,周期为10到100毫秒均可
Dim P As POINTAPI '声明坐标变量
Dim xx, yy '声明转换要用到的变量
GetCursorPos(P) '获取鼠标在屏幕中的位置
ScreenToClient(Me.Handle.ToInt32, P) '转换为本窗体的坐标
xx = P.x.ToString '把X转换成能显示到文本框的字符串格式
yy = P.y.ToString '把Y转换成能显示到文本框的字符串格式
TextBox1.Text = xx + "和" + yy '文本框的内容为X坐标和Y坐标
End Sub