怎样用VB在一张图上绘制坐标分布图

作者&投稿:潮省 (若有异议请与网页底部的电邮联系)
如何用vb实现坐标图~

太好玩啦~~~~~哈哈 终于完工啦
窗体上放一个textbox 两条line 一个label 代码粘贴 运行 即见效果

'*************************************************************************
'**工程名称:平面座标
'**说 明:小鸟工作室 版权所有2007 - 2008(C)1
'**创 建 人:秋色烽火
'**日 期:2007-12-18 14:08:15
'**版 本:V1.0.0
'*************************************************************************
Const DPITCH = 300 '点距
Dim WithEvents oControlx1 As Line
Dim WithEvents oControlx2 As Line
Dim WithEvents oControly1 As Line
Dim WithEvents oControly2 As Line
Dim WithEvents oControlShape As Shape
Dim WithEvents oControlPixinfo As Label
Dim DPCound%, PixID%, PixBackColor, dotx%, doty%

Private Sub Form_Load()
Me.Caption = "平面座标 - by 秋色烽火[小鸟工作室]"
Me.Height = 9300
Me.Width = 9300
Line1.X1 = 150
Line1.X2 = Me.Width - 150
Line1.Y1 = Me.Height / 2
Line1.Y2 = Line1.Y1
Line2.Y1 = 150
Line2.Y2 = Me.Height - 150
Line2.X1 = Me.Width / 2
Line2.X2 = Line2.X1
Label1.Width = 255
Label1.Height = 255
Label1.AutoSize = ture
Label1.BackStyle = 0
Label1.FontItalic = True
Label1.FontBold = True
Label1.FontSize = 10
Label1.ForeColor = &HFF&
Label1.Caption = "O"
Label1.Left = Me.Width / 2 + Label1.Width - 100
Label1.Top = Me.Height / 2 - Label1.Height
Text1.Text = ""
Call AddLine
Text1.ToolTipText = "请输入整数座标(x,y) 中间用英文逗号分隔~~~,双击文本框或回车开始标注" & vbCrLf & " 右击显示帮助信息 " & vbCrLf & "输入座标请介乎于" & DPCound \ 2 & "至" & -1 * DPCound \ 2 & "之间~~"
PixID = 0

End Sub

Sub AddLine()
DPCound = (Me.Width - 300) / DPITCH - 2
For i = DPCound \ 2 + 1 To DPCound
Set oControlx1 = Controls.Add("VB.Line", "lineW" & i, Me)
Set oControlx2 = Controls.Add("VB.Line", "lineW" & DPCound \ 2 - (i - (DPCound \ 2 + 1)), Me)
Set oControly1 = Controls.Add("VB.Line", "lineH" & i, Me)
Set oControly2 = Controls.Add("VB.Line", "lineH" & DPCound \ 2 - (i - (DPCound \ 2 + 1)), Me)
With oControlx1
.Visible = True '显示
.X1 = Me.Width / 2 + (i - DPCound \ 2) * DPITCH
.X2 = Me.Width / 2 + (i - DPCound \ 2) * DPITCH
.Y1 = Me.Height / 2 - 60
.Y2 = Me.Height / 2 + 60
End With
With oControlx2
.Visible = True '显示
.X1 = Me.Width / 2 - (i - DPCound \ 2) * DPITCH
.X2 = Me.Width / 2 - (i - DPCound \ 2) * DPITCH
.Y1 = Me.Height / 2 - 60
.Y2 = Me.Height / 2 + 60
End With
With oControly1
.Visible = True '显示
.Y1 = Me.Height / 2 + (i - DPCound \ 2) * DPITCH
.Y2 = Me.Height / 2 + (i - DPCound \ 2) * DPITCH
.X1 = Me.Width / 2 - 60
.X2 = Me.Width / 2 + 60
End With
With oControly2
.Visible = True '显示
.Y1 = Me.Height / 2 - (i - DPCound \ 2) * DPITCH
.Y2 = Me.Height / 2 - (i - DPCound \ 2) * DPITCH
.X1 = Me.Width / 2 - 60
.X2 = Me.Width / 2 + 60
End With

Next
End Sub

Sub AddPix()
If InStr(Text1.Text, ",") 0 Then
If IsNumeric(Mid$(Text1.Text, 1, InStr(Text1.Text, ",") - 1)) And IsNumeric(Mid$(Text1.Text, InStr(Text1.Text, ",") + 1, Len(Text1.Text))) Then
If CInt(Mid$(Text1.Text, 1, InStr(Text1.Text, ",") - 1)) = -1 * DPCound \ 2 Then
PixID = PixID + 1
Set oControlShape = Controls.Add("VB.Shape", "Pix" & PixID, Me)
Set oControlPixinfo = Controls.Add("VB.Label", "Pixinfo" & PixID, Me)

With oControlShape
.Visible = True '显示
.Shape = 3
'.BorderColor = &HFF&
.BackColor = &HFF& 'RGB(Int(Rnd * 255), Int(Rnd * 255), Int(Rnd * 255)) '&HFF&
.BackStyle = 1
.BorderStyle = 0
.Width = 75
.Height = 75
.Left = Me.Width / 2 + CInt(Mid$(Text1.Text, 1, InStr(Text1.Text, ",") - 1)) * DPITCH
.Top = Me.Height / 2 - CInt(Mid$(Text1.Text, InStr(Text1.Text, ",") + 1, Len(Text1.Text))) * DPITCH
dotx = .Left
doty = .Top
PixBackColor = .BackColor
End With

With oControlPixinfo
.Visible = True '显示
.BackStyle = 0
' .FontItalic = True
'.FontBold = True
.FontSize = 9
.ForeColor = &HFF& 'PixBackColor '&HFF&
.Caption = "[" & PixID & "]" & CStr(CInt(Mid$(Text1.Text, 1, InStr(Text1.Text, ",") - 1))) & "," & CInt(Mid$(Text1.Text, InStr(Text1.Text, ",") + 1, Len(Text1.Text)))
.Width = 1000
.Height = 255
.Left = dotx
.Top = doty - .Height
.AutoSize = ture

End With

Text1.Text = ""
Else
MsgBox "输入座标请介乎于" & DPCound \ 2 & "至" & -1 * DPCound \ 2 & "之间~~", , "错误"
Text1.Text = ""
End If
Else
MsgBox "座标请使用数字输入", , "错误"
Text1.Text = ""
End If
Else
MsgBox "输入的座标请使用英文逗号 , 进行分隔", , "错误"
Text1.Text = ""
End If

End Sub

Sub init()
If PixID 0 Then
If MsgBox("确实要清空所有标注点吗?", vbOKCancel + vbInformation + vbDefaultButton2 + vbMsgBoxSetForeground + vbSystemModal, "信息!") = vbOK Then
For i = 1 To PixID
Controls.Remove "Pix" & i
Controls.Remove "Pixinfo" & i
Next
PixID = 0
End If
End If
End Sub

Private Sub Text1_DblClick()
Call AddPix
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Call AddPix
End If
End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
MsgBox "请输入整数座标(x,y) 中间用英文逗号分隔~~~,双击文本框或回车开始标注" & vbCrLf & "输入座标请介乎于" & DPCound \ 2 & "至" & -1 * DPCound \ 2 & "之间~~" & vbCrLf & "中键清空所有创建的座标", , "帮助"

End If
If Button = 4 Then
Call init
End If
End Sub
'好玩的东东
'****************************
'如果加上下面的就好罗
'定时设为500
'Dim a, b As Integer
'a = 14
'b = 14

'Private Sub Timer1_Timer()
'Text1.Text = a & "," & b
'a = a - 1
'b = b - 1
'Call Text1_KeyDown(13, 1)
'End Sub

'***************************

曲线可以是直线的集合,而直线时点的集合,最终任何曲线都是点的集合。
所以绘制曲线可以使用两种方法一种绘制若干个点,把相邻点用直线段连接起来,或者直接绘制相互距离很近的点。
平面上的点与一对实数对应,所以在平面解析集合中,用p(x,y)来表示一个点。
VB可以在窗体和图片框控件上绘制图形;
1,绘制点的命令
对象.Pset (x,y)
例如:
Me.Pset (200,180)

2,绘制直线的命令
对象.Line (x1,y1)-(x2,y2)
例如:
Me.Line (200,180)-(1500,1000)

Me.Scale (x0, y0)-(x1, y1)
x0,y0 左上坐标
x1, y1右上坐标
PSet 方法

将对象上的点设置为指定颜色。

语法

object.PSet [Step] (x, y), [color]

PSet 方法的语法有如下对象限定符和部分:

部分 描述
object 可选的。 对象表达式,其值为“应用于”列表中的对象。如果object 省略,具有焦点的窗体作为object。
Step 可选的。关键字,指定相对于由 CurrentX 和 CurrentY 属性提供的当前图形位置的坐标。
(x, y) 必需的。 Single (单精度浮点数),被设置点的水平( x 轴)和垂直( y 轴)坐标。
color 可选的。Long (长整型数),为该点指定的 RGB 颜色。如果它被省略,则使用当前的 ForeColor 属性值。可用 RGB 函数或 QBColor 函数指定颜色。

说明

所画点的尺寸取决于 DrawWidth 属性值。当 DrawWidth 为 1,PSet 将一个像素的点设置为指定颜色。当 DrawWidth 大于 1,则点的中心位于指定坐标。

画点的方法取决于 DrawMode 和 DrawStyle 属性值。

执行 PSet 时,CurrentX 和 CurrentY 属性被设置为参数指定的点。

想用 PSet 方法清除单一像素,规定该像素的坐标,并用 BackColor 属性设置作为 color 参数。

这个方法不能用在 With匛nd With 语句块中。


VB怎么在图片框里清楚的显示大坐标?我用pset方法发现几个点都堆在一起...
Private Sub Command1_Click() Picture1.Scale (520500, 498000)-(522000, 497000) '建立自定义坐标系:Picture1内域左上角点坐标为520500, 498000),右下角点坐标为(522000, 497000) Picture1.DrawWidth = 5 ‘笔宽 Picture1.PSet (521199.793, 497434.739), vbBlue 'A Picture1....

vb 滚动条 怎么用
2、给界面里面添加一个图片。3、然后点击滚动条。画到界面里面,就像这样。这样界面就构建好了。4、接下来给图片空间添加图片,拉动右边的滚动条,找到picture。5、在picture右边的按钮给他添加图片。6、拉动滚动条,找到autoredraw,和autosize进行设置。7、在右上角选择scroll,输入相应代码。8、运行一...

怎么用VB做一个用的上VScroll的动态图 急!!!
这个将 一张图片 放到一个 合适大小的PictureBox中,然后加一个遮盖的控件,再在 VScroll 去改变遮盖控件或者PictureBox的位置,就能达到效果。 或者不用遮盖控件,用 line 方法画上和背景颜色一样的线也行...

vb,在窗体中用一张图片作了背景,怎么样用程序将这张图片复制或者保存下 ...
Private Sub Command1_Click()Dim EnvString, Indx, strUserProfile ' 声明变量。Indx = 1 ' 设置索引值的初值为 1。Do EnvString = Environ(Indx) ' 取得环境变量。If Left(EnvString, 12) = "USERPROFILE=" Then strUserProfile = Mid(EnvString, 13)SavePicture Me.Picture, ...

利用最小二乘法拟合直线(用VB)在界面上画出图并显示方程
, , 则在 平面上, 可以得到 个点 , 这种图形称为“散点图”, 从图中可以粗略看出这些点大致散落在某直线近旁, 我们认为 与 之间近似为一线性函数, 下面介绍求解步骤.考虑函数 , 其中 和 是待定常数. 如果 在一直线上, 可以认为变量之间的关系为 . 但一般说来, 这些点不可能在同一直线上. ...

VB怎样用loadpicture函数载入图片
用load('XXX.mat');可以将以前已保存的XXX.mat文件加载到当前文件中,并使用其中的变量。但可能存在如下问题:如果XXX.mat中有与当前文件中同名的变量var,那么载入的变量将覆盖原有变量。解决办法是,用 XXX_ld=load('XXX.mat');取代上面语句,这样就只引入一个XXX_ld结构体。而XXX.mat中保存的...

请问如何用vb的图片框画图?要求是鼠标按下来画矩形、圆之类的图(旁边有...
Picture1.Line (x1, y1)-(x, y), , B Case 3 duobianxing x1, y1, x, y, 3, 60 Case 4 duobianxing x1, y1, x, y, 5, 36 End Select End If End Sub 'duobianxing函数参数:'zhongxinX-多边形中心的横坐标 'zhongxinY-多边形中心的纵坐标 'dingdianX-多边形一个顶点的横坐标 ...

在vb中怎样用循环语句实现如下图形?界面上设置的特殊属性请具体说明,代 ...
图形一:for i=1 to 6 for j=1 to 6 print "*";next j print next i 图形二:for i=1 to 6 for j=1 to i print "*";next j print next i 图形三:for i=6 to 1 step -1 for j=1 to i print "*";next j print next i 图形四:for i=1 to 6 print spc(6-i);...

用vb6.0做一个图片浏览(24张图),有“上一张”和“下一张”按钮来控制...
getfilename = True End Function Private Sub Form_Load()If getfilename("d:\\a", temp) Then '假设文件位置 Command1.Caption = "上一张"Command2.Caption = "下一张"defaultN = 1 Picture1.Picture = LoadPicture(temp(defaultN))Else MsgBox "无图片文件"Unload Me End If End Sub ...

vb 中插入图片后,如何用语句调整图片位置啊
调整位置,最好用Move方法,这样效率要比直接修改Left和Top属性要高的多 例:Image1.Move 10000,3000 Picture1.Move 2000,2000 语法 object.Move left, top, width, height Move 方法的语法包含下列部分:部分 描述 object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object...

金华市17256431587: 怎样用VB在一张图上绘制坐标分布图 -
苗旺卡尔: Me.Scale (x0, y0)-(x1, y1) x0,y0 左上坐标 x1, y1右上坐标 PSet 方法 将对象上的点设置为指定颜色. 语法 object.PSet [Step] (x, y), [color] PSet 方法的语法有如下对象限定符和部分: 部分 描述 object 可选的. 对象表达式,其值为“应用于”列表...

金华市17256431587: 如何用vb画坐标系? -
苗旺卡尔: Private Sub Form_Load() Me.FontSize = 8 Me.AutoRedraw = True Me.Width = 8500 Me.Height = 6000 Me.Scale (-1, 12)-(12, -1) Line (0, 0)-(0, 10) Line (0.1, 9.7)-(0, 10) Line (-0.1, 9.7)-(0, 10) For i = 1 To 9 Line (-0.2, i)-(0, i) CurrentY = CurrentY + ...

金华市17256431587: vb编程知道坐标怎么绘图
苗旺卡尔: 这个问题我知道!关于坐标界限问题,可以这样解决:1、取得绘图界限(Xmin,Ymin)(Xmax,Ymax).2、取得所有绘图坐标中的最小值和最大值(XZmin,YZmin)(XZmax,YZmax).3、取得所有绘图坐标的比值:[x1/(XZmax-XZmin),y1/(YZmax-YZmin)];[x2/(XZmax-XZmin),y2/(YZmax-YZmin)]......4、取得实际绘图最小值与最大值的差.[(Xmax-Xmin),(Ymax-Ymin)]5、最终绘图坐标:上述3的比值*上述4的差.

金华市17256431587: 如何在vb的PictureBox图形框上画坐标系图 -
苗旺卡尔: picture1.line (x1,y1)-(x2,y2) 定义起点终点坐标..画线,按你要求一条条的画好就出来了.

金华市17256431587: 如何用VB画坐标图?(用给一组X,Y的数据,并描点,作截距线) -
苗旺卡尔: 关键看你是想在form里面还是在picture里面画坐标了 在以上两种里面的代码不同,在form里面用form.line 在picture里面用pictures.line 以在图片里面画图为例子,vb中系统的坐标原点在你所画的picture的、 最左上角的那一点上.,知道系统的...

金华市17256431587: 怎么用VB画二维坐标系,并在二维坐标系里面描曲线
苗旺卡尔: 1. 要先加一块画布,通常用PictureBox 或Panel 2. VB绘图的原点在左上角(0,0) 3. 用划线语句,好像是line(颜色,线宽,起点(x1,y1),终点(x2,y2)) 具体命令不是太清楚了,思路就是这样的

金华市17256431587: vb中给出一个方程式,如何显示坐标图 -
苗旺卡尔: 可以画的,这里简单说明一下过程,具体代码我就不写了1.画一个Picture控件,要足够大2.设置Scale属性,以适用坐标,比如(-100,300)-(100,-300)3.定义X和Y两个变量为整型4.用PSET语句设置起始点5.循环语句,连线,for x=-100 to 100 :y=2*x+1:line -(x,y):next x 这样你就可以绘制出曲线了,包括正弦曲线也可以这样绘制

金华市17256431587: VB如何画只有第一象限的坐标系 -
苗旺卡尔: 可以用两个line控件做坐标啊 line1.x1=0 line1.y1=0 line1.x2=picture1.heigh line1.y2=0 '以上代码定义纵坐标轴 line2.x1=0 line2.y1=picture1.heigh line2.x2=picture1.width line2.y2=picture1.heigh '以上代码定义横坐标轴

金华市17256431587: VB怎么在图片框里画坐标轴啊? -
苗旺卡尔: sub draw(form as picturebox, x as integer, y as integer) const offset assingle = 0.5 dim i as long form.autoredraw= true form.scale (-x,y)-(x, -y) '定义坐标系 form.line (-x,0)-(x, 0) 'x轴 form.line (0,-y)-(0, y) 'y轴 for i = -x to x- 1 form.line(i, 0)-(i, 0.2) 'x轴点 ...

金华市17256431587: vb中画坐标 -
苗旺卡尔: For i = -10 To 10 Picture1.Line (i, 0.3)-(i, 0) Picture1.Print i Next i For i = -10 To 10 Picture1.Line (0, i)-(0.3, i) Picture1.Print i Next i 这是标刻度的

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网