vb picturebox上画坐标系,在坐标系内画点,画满20个后,picturebox.cls,再次调用画坐标函数,不对,求帮
picturebox上自定义了一个坐标系,以picturebox右下角为坐标原点,把X轴分为20等分,在每一等分上画一个点,Y值为数组值画完20个点后,picturebo...
picturebox上自定义了一个坐标系,以picturebox右下角为坐标原点,把X轴分为20等分,在每一等分上画一个点,Y值为数组值
画完20个点后,picturebox.cls,再调用画坐标系的函数,再次画点,结果画出来的坐标系就不一样了
怎么回事呢?
Sub DrawZbx() ’画坐标系和坐标系上的虚线函数
w = picShow.ScaleWidth
h = picShow.ScaleHeight
Dim i As Integer
picShow.Scale (picShow.ScaleWidth, picShow.ScaleHeight)-(0, 0) ‘定义坐标原点为右下角
picShow.AutoRedraw = True
picShow.Line (500, 500)-(w - 500, 500)
picShow.Line (500, 500)-(500, h)
picShow.Line (w - 500, 500)-(w - 500, h)
picShow.Line (500, h)-(w - 500, h)
For i = 0 To 10
picShow.Line (w - 430, i * (h - 500) / 10 + 500)-(w - 500, i * (h - 500) / 10 + 500)
picShow.CurrentX = w
picShow.CurrentY = i * (h - 500) / 10 + 500
picShow.Print i * 50
Next i
For i = 1 To 19
picShow.DrawStyle = 2
picShow.Line (i * (w - 1000) / 20 + 500, 500)-(i * (w - 1000) / 20 + 500, h), &HC0C0C0
Next i
For i = 1 To 9
picShow.DrawStyle = 2
picShow.Line (w - 500, i * (h - 500) / 10 + 500)-(500, i * (h - 500) / 10 + 500), &HC0C0C0
Next i
End Sub
第一次调用画坐标的函数 w=7635,h=3915都是正值
picturebox.cls后,再次调用画坐标的函数,w=-7635,h=-3915,怎么回事呢
恳求帮忙呀 展开
画完20个点后,picturebox.cls,再调用画坐标系的函数,再次画点,结果画出来的坐标系就不一样了
怎么回事呢?
Sub DrawZbx() ’画坐标系和坐标系上的虚线函数
w = picShow.ScaleWidth
h = picShow.ScaleHeight
Dim i As Integer
picShow.Scale (picShow.ScaleWidth, picShow.ScaleHeight)-(0, 0) ‘定义坐标原点为右下角
picShow.AutoRedraw = True
picShow.Line (500, 500)-(w - 500, 500)
picShow.Line (500, 500)-(500, h)
picShow.Line (w - 500, 500)-(w - 500, h)
picShow.Line (500, h)-(w - 500, h)
For i = 0 To 10
picShow.Line (w - 430, i * (h - 500) / 10 + 500)-(w - 500, i * (h - 500) / 10 + 500)
picShow.CurrentX = w
picShow.CurrentY = i * (h - 500) / 10 + 500
picShow.Print i * 50
Next i
For i = 1 To 19
picShow.DrawStyle = 2
picShow.Line (i * (w - 1000) / 20 + 500, 500)-(i * (w - 1000) / 20 + 500, h), &HC0C0C0
Next i
For i = 1 To 9
picShow.DrawStyle = 2
picShow.Line (w - 500, i * (h - 500) / 10 + 500)-(500, i * (h - 500) / 10 + 500), &HC0C0C0
Next i
End Sub
第一次调用画坐标的函数 w=7635,h=3915都是正值
picturebox.cls后,再次调用画坐标的函数,w=-7635,h=-3915,怎么回事呢
恳求帮忙呀 展开
展开全部
w和h定义为全局变量,其赋值语句和picShow.Scale 坐标系设置都移到Form_load中,这些只需要设置一次,不用每次调用子程序都设置一次。
Dim w, h
Private Sub Form_Load()
w = picShow.ScaleWidth
h = picShow.ScaleHeight
picShow.Scale (picShow.ScaleWidth, picShow.ScaleHeight)-(0, 0) '定义坐标原点为右下角
picShow.AutoRedraw = True
End Sub
Sub DrawZbx()
picShow.Line (500, 500)-(w - 500, 500)
picShow.Line (500, 500)-(500, h)
。。。。。。。。。。。。
Dim w, h
Private Sub Form_Load()
w = picShow.ScaleWidth
h = picShow.ScaleHeight
picShow.Scale (picShow.ScaleWidth, picShow.ScaleHeight)-(0, 0) '定义坐标原点为右下角
picShow.AutoRedraw = True
End Sub
Sub DrawZbx()
picShow.Line (500, 500)-(w - 500, 500)
picShow.Line (500, 500)-(500, h)
。。。。。。。。。。。。
展开全部
当你把PictureBox的右下角设为坐标原点时,picShow.ScaleWidth和picShow.ScaleHeight确实是负数的。之所以第一次运行正常,是因为你的w和h是在设定坐标系之前赋值的,所以第一次运行DrawZbx的时候它是正数的,第二次运行DrawZbx的时候,由于这时候坐标系已经改了,所以w和h就变为负数了。
所以我的意见也和楼上的一样,就是把w和h定义为全局变量,其赋值语句和picShow.Scale 坐标系设置都移到Form_load中,这些只需要设置一次,不用每次调用子程序都设置一次。坐标系设定后,你用cls是不会把坐标系清除掉的,所以坐标系不用重复设置!
所以我的意见也和楼上的一样,就是把w和h定义为全局变量,其赋值语句和picShow.Scale 坐标系设置都移到Form_load中,这些只需要设置一次,不用每次调用子程序都设置一次。坐标系设定后,你用cls是不会把坐标系清除掉的,所以坐标系不用重复设置!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询