重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
程序界面本身就是被windows画出来的,每次显示都要画上一遍,而每次重新画出程序,你的函数并没有因此而重新调用,当然图形就不见.
创新互联公司是一家从事企业网站建设、做网站、网站设计、行业门户网站建设、网页设计制作的专业网站建设公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点上1000家。
你可以在窗体的paint()事件里掉用函数
绘图代码写在Paint事件中,如
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = Me.CreateGraphics
g.DrawLine(Pens.Red, 100, 100, 200, 100)
End Sub
'方法二:在 PictureBox1上显示图像----图画在Bitmap
PictureBox1.Image = Nothing
Dim wid As Integer = PictureBox1.ClientSize.Width
Dim hgt As Integer = PictureBox1.ClientSize.Height
Dim bm As New Bitmap(wid, hgt)
Dim g As Graphics = Graphics.FromImage(bm)
'画图代码
'画图代码
PictureBox1.Image = bm
PictureBox1.Refresh()
g.Dispose()
我的做法是先写入一个图片变量,然后再写入到容器上。容器设置双缓冲
还有你说的控件必须透明不太明白,可以直接在容器上绘图,不需要控件,图片的透明度可以用RGBA色的A值(透明度)来控制
我这个也是实时翻滚刷新的,不会闪!
如果是画在控件上的就是
控件.Invalidate() 或者 控件.Refresh()
这样就会引发控件的Paint事件
如果是画到Bitmap里面的就重新执行绘制的过程就行了
应该是需要在Form2上做一个事件,只要在Form2里成功修改了数据库中Machine的值,则Form2可在FormCloseing事件中将修改的Machine关键值传回给Form1。而Form1中应该还要写一个更新Machine的函数,根据Form2传回的参数对Form1现在有控件进行查找参数对应的控件,然后再读取数据库中数据,再修改Form1里对应控件属性。