7,766
社区成员
发帖
与我相关
我的任务
分享
'窗体内添加一个Picture1,五个CommandButton,从1到5分别为:放大/缩小/清除/读取/保存
Option Explicit
'简单矢量绘图例子
'
'BY 嗷嗷叫的老马
'紫水晶工作室 http://www.m5home.com/
Private Const SS As Single = 1.3 '缩小/放大的倍数
Dim RecPoint() As String, MaxIndex As Long '主要数据存储数组及其最大的下标
Dim P1X As Long, P1Y As Long, P2X As Long, P2Y As Long '内部坐标系统的左上角坐标与右下角坐标
Private Sub Command1_Click()
'清除显示,但不清除数据
Picture1.Cls
End Sub
Private Sub Command2_Click()
'从硬盘中读入点数据
Dim Buff As String
Open "c:\123.txt" For Binary As #1
Buff = Space(LOF(1))
Get #1, , Buff
Close #1
RecPoint() = Split(Buff, vbCrLf)
Call DrawPoint
End Sub
Private Sub Command3_Click()
'保存点数据
Open "c:\123.txt" For Binary As #1
Put #1, , Join(RecPoint(), vbCrLf)
Close #1
End Sub
Private Sub Command4_Click()
'放大,将'画布'变小就是放大
P1Y = P1Y / SS: P2X = P2X / SS
Picture1.Scale (P1X, P1Y)-(P2X, P2Y) '改变坐标系统
Call DrawPoint
End Sub
Private Sub Command5_Click()
'缩小,将'画布'变小就是缩小
P1Y = P1Y * SS: P2X = P2X * SS
Picture1.Scale (P1X, P1Y)-(P2X, P2Y) '改变坐标系统
Call DrawPoint
End Sub
Private Sub Form_Load()
P1X = 0: P1Y = 500
P2X = 500: P2Y = 0
Picture1.Scale (P1X, P1Y)-(P2X, P2Y) '初始化坐标系统
MaxIndex = -1: ReDim RecPoint(0)
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Caption = X & "/" & Y
If (Button And vbLeftButton) = vbLeftButton Then '按下鼠标左键时记录坐标并显示
MaxIndex = MaxIndex + 1: ReDim Preserve RecPoint(MaxIndex)
RecPoint(MaxIndex) = X & "," & Y
Picture1.PSet (X, Y), vbBlack
End If
End Sub
Private Sub DrawPoint()
'绘图过程.
Dim I As Long, PBuff() As String
Picture1.Cls
For I = 0 To UBound(RecPoint)
PBuff = Split(RecPoint(I), ",")
Picture1.PSet (PBuff(0), PBuff(1)), vbBlack
Next I
End Sub