我现在做一个小程序。就是将采集得到的数据绘图就可以了,程序如下:
Private Sub Form_Load()‘---》这里都是一些初始化的东西
'--显示哪一天的数据--
Lbl_Day = "第" & Str(day_num) & "天的数据:"
'--绘图框的初始化---
Picture1.AutoRedraw = True
Picture1.Scale (0, 100)-(100, 0) '设置坐标
Picture1.DrawStyle = vbSolid '实线
Picture1.BackColor = QBColor(7) 'RGB(0, 255, 0) 'QBColor(14)设置背景色,,,QBColor(0)
Picture1.DrawWidth = 1
Picture1.Line (0, 0)-(0, 100), QBColor(2)
Picture1.Line (0, 0)-(100, 0), QBColor(2)
Picture1.Line (100, 0)-(100, 100), QBColor(2)
Picture1.Line (0, 100)-(100, 100), QBColor(2)
End Sub然后就是绘图,也很简单,就是将数组Data里面的点用线连起来就可以了:
Private Sub Form_Activate()
Dim n As IntegerPicture1.RefreshFor n = 1 To Data_Len - 1
Picture1.Line (n, Data(n) * k)-(n + 1, Data(n + 1) * k), QBColor(14)'-->这里的k是个常量
Next nPicture1.Line (0, 0)-(0, 100), QBColor(14)
Picture1.Line (0, 0)-(100, 0), QBColor(14)
End Sub这里的picture1是一个picturebox控件。运行的时候,发现大约Data数组里面的点,前面一半左右是绘出来了,而后面的就已经超出picturebox越界了,就看不见了。当我把Data数组里面的数据减少的时候,就可以画出完整的图线了。
不知道怎么设置啊?因为我的Data数组里面的数据有时多有时少,怎么样才能都画在pictureBox里面呢??
谢谢!
Private Sub Form_Load()‘---》这里都是一些初始化的东西
'--显示哪一天的数据--
Lbl_Day = "第" & Str(day_num) & "天的数据:"
'--绘图框的初始化---
Picture1.AutoRedraw = True
Picture1.Scale (0, 100)-(100, 0) '设置坐标
Picture1.DrawStyle = vbSolid '实线
Picture1.BackColor = QBColor(7) 'RGB(0, 255, 0) 'QBColor(14)设置背景色,,,QBColor(0)
Picture1.DrawWidth = 1
Picture1.Line (0, 0)-(0, 100), QBColor(2)
Picture1.Line (0, 0)-(100, 0), QBColor(2)
Picture1.Line (100, 0)-(100, 100), QBColor(2)
Picture1.Line (0, 100)-(100, 100), QBColor(2)
End Sub然后就是绘图,也很简单,就是将数组Data里面的点用线连起来就可以了:
Private Sub Form_Activate()
Dim n As IntegerPicture1.RefreshFor n = 1 To Data_Len - 1
Picture1.Line (n, Data(n) * k)-(n + 1, Data(n + 1) * k), QBColor(14)'-->这里的k是个常量
Next nPicture1.Line (0, 0)-(0, 100), QBColor(14)
Picture1.Line (0, 0)-(100, 0), QBColor(14)
End Sub这里的picture1是一个picturebox控件。运行的时候,发现大约Data数组里面的点,前面一半左右是绘出来了,而后面的就已经超出picturebox越界了,就看不见了。当我把Data数组里面的数据减少的时候,就可以画出完整的图线了。
不知道怎么设置啊?因为我的Data数组里面的数据有时多有时少,怎么样才能都画在pictureBox里面呢??
谢谢!
用两个picturebox,将绘图的picturebox的大小不要固定,数据多的时候增加其宽度,直至可以绘下所有数据。另外一个做容器,然后加一个水平滚动条,用滚动条来移动绘图的picturebox的位置就可以显示图像了。
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 对象缺省为 object。
Picture 必需的。要绘制到 object 上的图形源。Form 或 PictureBox 必须是 Picture 属性。
x1, y1 必需的。均为单精度值,指定在 object 上绘制 picture 的目标坐标(x-轴和y-轴)。object 的 ScaleMode 属性决定使用的度量单位。
Width1 可选的。单精度值,指示 picture 的目标宽度。object 的 ScaleMode 属性决定使用的度量单位。如果目标宽度比源宽度 (width2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源宽度。
Height1 可选的。 单精度值,指示 picture 的目标高度。object 的 ScaleMode 属性决定使用的度量单位。如果目标高度比源高度 (height2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源高度。
x2, y2 可选的。均为单精度值,指示 picture 内剪贴区的坐标(x-轴和y-轴)。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则缺省为 0。
Width2 可选的。单精度值,指示 picture 内剪贴区的源宽度。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则使用整个源宽度。
Height2 可选的。 单精度值,指示 picture 内剪贴区的源高度。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则使用整个源高度。
Opcode 可选的。是长型值或仅由位图使用的代码。它用来定义在将 pictur 绘制到 object 上时对 picture 执行的位操作(例如, vbMergeCopy 或 vbSrcAnd 操作符)。关于位操作符常数的完整列表,请参阅 Visual Basic Help 文件中的 RasterOp Constants 主题。
在使用opcode时有一些限制。例如,如果资源是图标或图元文件,则只能使用 vbSrcCopy,而不能使用其他的opcode;并且,与图案 (或 SDK 术语中的"画笔"),如 MERGECOPY、 PATCOPY、 PATPAINT 和 PATINVERT,相交互的opcode实际上是同目标的 FillStyle 属性交互。注意 Opcode 用于将按位操作传递到位图。当传递其他图象类型时将一个值给该参数会造成“无效过程调用或参数”错误。这是设计的原因。要避免这个错误,对于除位图外的图象,将 Opcode 参数置为空。
说明通过使用负的目标高度值 (height1) 和 / 或目标宽度值 (width1) ,可以水平或垂直翻转位图。 可以省略任何多个可选的尾部的参数 。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。注意,在将一个.Bmp加载入 PictureBox 控件和使用 Windows API 函数 BitBlt() 添加图片之间有一点不同。当您对一个图象使用 BitBlt() 时,PictureBox 控件不知道象您使用 LoadPicture方法那样去调整大小。将 ScaleWidth 和 ScaleHeight 属性设置为图象的大小也不起作用。如果您想在使用 BitBlt 之后用 PictureBox 调整新图片的大小,必须用代码手工做,转换单位并处理边框,下面是如何这样做的一个简单示例:Sub ResizePictureBoxToImage(pic as PictureBox, twipWd _
as Integer, twipHt as Integer)
' 该代码假设所有的单位都为缇。如果
' 不是,必须在调用该例程之前,转换为缇。
' 这里也假设图象显示在0,0处。
Dim BorderHt as Integer, BorderWd as Integer
BorderWd = Pic.Width - Pic.ScaleWidth
BorderHt = Pic.Height - Pic.ScaleHeight
pic.Move pic.Left, pic.Top, twipWd + BorderWd, _
twipHt + BorderHt
End Sub
不就是这条语句的错吗
楼主把 picture的坐标都定死了 当然显示不下了应该在程序中动态改变坐标系的
免费的学习、交流、源码、工具网站,欢迎大家访问!
http://www.j2soft.cn/