你说的“在Form_Load里面我直接调用了PictureBox”是什么意思?你是怎么调用的? 你可以试一下:Private Sub Form_Load()
With Picture1 .Left = 100 .Height = 200 .Top = 300 .Width = 400 .AutoRedraw = True End With
End Sub 这样是可以的。也就是说, 在Form_Load的时候,PictureBox已经加载 。
Private Sub Form_Load() Me.Show '调用了PictureBox End Sub
Private Sub Form_Load() '可以啊 Picture1.AutoRedraw = True Picture1.Print "可以啊" End Sub
我的程序其实是这样的: Private Sub Form_Load() LaserLine Picture1, Picture1.ScaleWidth, Picture1.ScaleHeight, Me.BackColor Unload Me End Sub 其中,LaserLine是我自定义的一个函数,里面用到Me.Line,也就是Form1.Line。 这样是不行的,会死机。只好加一个Timer(),把LaserLine函数放到里面,才行。我也不知道为什么。
If 你不知道怎样给分 Then 去看:http://www.csdn.net/expert/faq.shtm
你说的“在Form_Load里面我直接调用了PictureBox”是什么意思?你是怎么调用的? 你可以试一下:Private Sub Form_Load()
With Picture1
.Left = 100
.Height = 200
.Top = 300
.Width = 400
.AutoRedraw = True
End With
End Sub 这样是可以的。也就是说, 在Form_Load的时候,PictureBox已经加载 。
Me.Show
'调用了PictureBox
End Sub
Picture1.AutoRedraw = True
Picture1.Print "可以啊"
End Sub
Private Sub Form_Load()
LaserLine Picture1, Picture1.ScaleWidth, Picture1.ScaleHeight, Me.BackColor
Unload Me
End Sub
其中,LaserLine是我自定义的一个函数,里面用到Me.Line,也就是Form1.Line。
这样是不行的,会死机。只好加一个Timer(),把LaserLine函数放到里面,才行。我也不知道为什么。
这应该不一定会引起死机,但是我可以肯定你的Line是画不上去的。
之所以在Active事件里,或用Timer控制可以画出来,是因为这时Form已经加
载。但这都不是正途,每次窗体激活或时间事件到来就重画是不合逻辑的。
画东西当然应该应该在Paint事件里做,这在Windows程序设计里是众所周知的。还有尽量不要用AutoRedraw这个东西,VB会将窗体里的所有东西存于内存图片。不仅占内存,重画时也比较慢。除非你画了一次图后就不准备再更改,否则不
要用AutoRedraw。
有几个要换行的地方没换行,还有为什么重复一些词?不懂。