vb编写一个读取txt文件中坐标然后绘图

四季酒店 2019-01-16 11:22:39
刚开始学vb ,边学边写,现在想实现读取外部的txt中 两列坐标x,y,然后在picture1 绘制出来, 但是x,y数值比较大,所以要给定picture1的坐标,picture1.scale(x0-y0)-(x1-y1), 其中x0 y0 x1 y1的值 根据读取的txt两列坐标的最大值和最小值来决定。

我自己学着写出了 绘制这些点, 但是不能根据两列坐标最大值和最小值来规定坐标系,只能手动修改, 求各位帮帮忙,谢谢了!

Private Sub Command1_Click()


Dim a As String
Dim x As Double
Dim y As Double


Open "E:\vbt\sps\2.s" For Input As #1
Do While Not EOF(1)
Line Input #1, a

x = Mid(a, 48, 8)
y = Mid(a, 57, 10)

Picture1.Scale (784010, 3360000)-(798182, 3369120)
Picture1.DrawWidth = 5
Picture1.PSet (x, y), vbRed

Loop
Close #1

End Sub


目前可以显示
主要是picture1.scale 里的xy值想根据读取的坐标大小来自动填写
类似于picture1.scale(min x,max y)-(max x,min y)
...全文
292 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
四季酒店 2019-01-16
  • 打赏
  • 举报
回复
引用 5 楼 舉杯邀明月 的回复:
参考一下吧。 这是按你帖子中贴出来的“绘图代码”改写的,  如果你的那段代码没有问题,那我这段代码也不会有问题。
Option Explicit

Private Sub Command1_Click()
   Dim a As String
   Dim x As Double
   Dim y As Double
   Dim xMax#, xMin#, yMax#, yMin#
 
   Open "E:\vbt\sps\2.s" For Input As #1
   xMax = -9E+300:
   xMin = -xMax
   yMax = xMax
   yMin = xMin
   Do While Not EOF(1)
      Line Input #1, a
      x = Mid$(a, 48, 8)
      y = Mid$(a, 57, 10)
      If (x > xMax) Then xMax = x
      If (x < xMin) Then xMin = x
      If (y > yMax) Then yMax = y
      If (y < yMin) Then yMin = y
   Loop
   x = (xMax - xMin) * 0.05
   y = (yMax - yMin) * 0.05
   xMax = xMax + x:  xMin = xMin - x
   yMax = yMax + y:  yMin = yMin - y
   Picture1.Scale (xMin, yMax)-(xMax, yMin)
   Picture1.DrawWidth = 5
   
   Seek #1, 1
   Do While Not EOF(1)
      Line Input #1, a
      x = Mid(a, 48, 8)
      y = Mid(a, 57, 10)
      Picture1.PSet (x, y), vbRed
   Loop
   Close #1
End Sub
可以留个联系方式吗
四季酒店 2019-01-16
  • 打赏
  • 举报
回复
引用 5 楼 舉杯邀明月 的回复:
参考一下吧。 这是按你帖子中贴出来的“绘图代码”改写的,  如果你的那段代码没有问题,那我这段代码也不会有问题。
Option Explicit

Private Sub Command1_Click()
   Dim a As String
   Dim x As Double
   Dim y As Double
   Dim xMax#, xMin#, yMax#, yMin#
 
   Open "E:\vbt\sps\2.s" For Input As #1
   xMax = -9E+300:
   xMin = -xMax
   yMax = xMax
   yMin = xMin
   Do While Not EOF(1)
      Line Input #1, a
      x = Mid$(a, 48, 8)
      y = Mid$(a, 57, 10)
      If (x > xMax) Then xMax = x
      If (x < xMin) Then xMin = x
      If (y > yMax) Then yMax = y
      If (y < yMin) Then yMin = y
   Loop
   x = (xMax - xMin) * 0.05
   y = (yMax - yMin) * 0.05
   xMax = xMax + x:  xMin = xMin - x
   yMax = yMax + y:  yMin = yMin - y
   Picture1.Scale (xMin, yMax)-(xMax, yMin)
   Picture1.DrawWidth = 5
   
   Seek #1, 1
   Do While Not EOF(1)
      Line Input #1, a
      x = Mid(a, 48, 8)
      y = Mid(a, 57, 10)
      Picture1.PSet (x, y), vbRed
   Loop
   Close #1
End Sub
我的天 完美。。。。。我先学习一下。。。。
舉杯邀明月 2019-01-16
  • 打赏
  • 举报
回复
参考一下吧。
这是按你帖子中贴出来的“绘图代码”改写的,
 如果你的那段代码没有问题,那我这段代码也不会有问题。
Option Explicit

Private Sub Command1_Click()
Dim a As String
Dim x As Double
Dim y As Double
Dim xMax#, xMin#, yMax#, yMin#

Open "E:\vbt\sps\2.s" For Input As #1
xMax = -9E+300:
xMin = -xMax
yMax = xMax
yMin = xMin
Do While Not EOF(1)
Line Input #1, a
x = Mid$(a, 48, 8)
y = Mid$(a, 57, 10)
If (x > xMax) Then xMax = x
If (x < xMin) Then xMin = x
If (y > yMax) Then yMax = y
If (y < yMin) Then yMin = y
Loop
x = (xMax - xMin) * 0.05
y = (yMax - yMin) * 0.05
xMax = xMax + x: xMin = xMin - x
yMax = yMax + y: yMin = yMin - y
Picture1.Scale (xMin, yMax)-(xMax, yMin)
Picture1.DrawWidth = 5

Seek #1, 1
Do While Not EOF(1)
Line Input #1, a
x = Mid(a, 48, 8)
y = Mid(a, 57, 10)
Picture1.PSet (x, y), vbRed
Loop
Close #1
End Sub
四季酒店 2019-01-16
  • 打赏
  • 举报
回复
这是数据截图,我用的 读取两次 一次定坐标一次绘制 的思路 代码删掉了 写几行都很费劲 水平实在有限 你能不能帮忙写一下我学习
舉杯邀明月 2019-01-16
  • 打赏
  • 举报
回复
引用 2 楼 houyuxin1211 的回复:
[quote=引用 1 楼 舉杯邀明月 的回复:]想要“根据坐标范围”来设置Pic控件的坐标范围,
那你就得先把数据读完、并保存下来;然后分别找出最大值与最小值。
然后再把所有坐标点“绘图”。


当然,你也可以“读两遍文件”啊。
第一次读数据,找坐标值的范围,然后设置Pic控件的坐标范围;
第二次读数据,进行绘图…………
能不能帮忙写下代码 这个思路我做过了 但是做不过去 [/quote]
你说“这个”到底指哪个? 我在1楼说的方法是“两种”而不是1种!



另外:
1. 你为何不把“这个思路”的代码贴出来,让大家看看问题在哪?
2. 你的源数据(文件内容)是什么样的格式,怎么不贴个10来行出来看看?
四季酒店 2019-01-16
  • 打赏
  • 举报
回复
引用 1 楼 舉杯邀明月 的回复:
想要“根据坐标范围”来设置Pic控件的坐标范围,
那你就得先把数据读完、并保存下来;然后分别找出最大值与最小值。
然后再把所有坐标点“绘图”。


当然,你也可以“读两遍文件”啊。
第一次读数据,找坐标值的范围,然后设置Pic控件的坐标范围;
第二次读数据,进行绘图…………
能不能帮忙写下代码 这个思路我做过了 但是做不过去
舉杯邀明月 2019-01-16
  • 打赏
  • 举报
回复
想要“根据坐标范围”来设置Pic控件的坐标范围,
那你就得先把数据读完、并保存下来;然后分别找出最大值与最小值。
然后再把所有坐标点“绘图”。


当然,你也可以“读两遍文件”啊。
第一次读数据,找坐标值的范围,然后设置Pic控件的坐标范围;
第二次读数据,进行绘图…………

7,763

社区成员

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

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