毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

写了Draw过程,想放在主窗体启动的时候,PictureBox就显示出来,可是一闪而过,什么原因呢

更新时间:2013-1-5:  来源:毕业论文

写了Draw过程,想放在主窗体启动的时候,PictureBox就显示出来,可是一闪而过,什么原因呢
我写了一个PictureBox的Draw过程,想在窗体启动时候,Picturebox上面就绘制了我的要求,可是我把定义的过程放在主窗体的Active或者paint事件里面,发现是一闪而过,Picturebox又变成了原来的样子,这是为什么呢?我如果人工去调用这个绘画过程,Picturebox可以显示我的绘画过程,这是为什么呢?

 Public Sub DrawXYPlotCanvas()         Dim i As Integer        Using linepen As New Pen(Color.White, 1) '定义画笔             Dim Rec_XYPlot As New Rectangle(0, 0, pbWidth, pbHeight) '定义PictureBox 矩形区域             Dim Rec_Font As New RectangleF '定义绘字矩形区域             Dim Brush_Font As New SolidBrush(Color.White) '定义字体颜色             Dim Brush_pb As New SolidBrush(Color.Black)  '重绘Picturebox颜色             Dim Plot_Font As New Font("Arial", 10, FontStyle.Regular) '定义字体             '获取坐标原点             Org_x = LeftOffset             Org_Y = pbHeight - BootomOffset             '获取 X轴,Y轴间隔值             XInterval = (pbWidth - LeftOffset - RightOffset) / Xtickcounts  '58             YInterval = (pbHeight - TopOffset - BootomOffset) / Ytickcounts '32             '每次绘制之前,重绘PictureBox             xyplot.FillRectangle(Brush_pb, Rec_XYPlot)             '纵坐标             xyplot.DrawLine(linepen, LeftOffset, TopOffset / 2, LeftOffset, pbHeight - BootomOffset / 2 - 5)             '横坐标             ' xyplot.DrawLine(linepen, 20, pbHeight / 2 - 2, pbWidth - RightOffset, pbHeight / 2 - 2)             linepen.DashStyle = DashStyle.Dash             '绘制网格虚线             'X轴方向虚线 10条             'Y轴方向虚线 10条             For i = 0 To 10                 linepen.DashStyle = DashStyle.Dash                 '从最下面的轴开始绘制                 ' If i <> 5 Then                 xyplot.DrawLine(linepen, LeftOffset, (pbHeight - TopOffset) - YInterval * i, pbWidth - RightOffset, (pbHeight - TopOffset) - YInterval * i)                 '  End If                 '从最左侧开始绘制                 If i <> 0 Then                    xyplot.DrawLine(linepen, LeftOffset + XInterval * i, TopOffset - 3, LeftOffset + XInterval * i, pbHeight - TopOffset)                 End If                linepen.DashStyle = DashStyle.Solid                 'Draw X Axis tickcounts                 xyplot.DrawLine(linepen, LeftOffset, TopOffset + YInterval * i - 5, 18, TopOffset + YInterval * i - 5)                 'Draw Y Axis tickcounts                 xyplot.DrawLine(linepen, LeftOffset + XInterval * i, pbHeight - BootomOffset, LeftOffset + XInterval * i, pbHeight - BootomOffset + 7)             Next            '绘制纵坐标刻度             For i = 0 To 10                 If i > 5 Then                    xyplot.DrawString(CStr(5 - i * 1), Plot_Font, Brush_Font, 0, TopOffset / 2 + YInterval * i)                 Else                    xyplot.DrawString(CStr(5 - i * 1), Plot_Font, Brush_Font, 0 + FontOffset, TopOffset / 2 + YInterval * i)                 End If            Next            '绘制横坐标刻度             For i = 0 To 10                 '    If i <> 0 Then '差一个像素点                 xyplot.DrawString(CStr(i * 1000), Plot_Font, Brush_Font, XInterval * i, pbHeight - BootomOffset + 7)                 '   End If             Next          End Using     End Sub

xyplot是什么?它取得对象你认为真的有效么(在PictureBox刷新之后)?

用下面的这段代码试试:
mports System.Drawing.Drawing2D
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bmp = New Bitmap(PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height)
        Dim g = Graphics.FromImage(bmp)
        g.FillRectangle(New SolidBrush(Color.Gainsboro), 0, 0, PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height)
        g.DrawLine(New Pen(Color.Blue, 2.0F), 60, 90, 80, 140)
        PictureBox1.Image = bmp
    End Sub
End Class

用下面的这段代码试试:
mports System.Drawing.Drawing2D
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim bmp = New Bitmap(PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height)
        Dim g = Graphics.FromImage(bmp)
        g.FillRectangle(New SolidBrush(Color.Gainsboro), 0, 0, PictureBox1.ClientSize.Width, PictureBox1.ClientSize.Height)
        g.DrawLine(New Pen(Color.Blue, 2.0F), 60, 90, 80, 140)
        PictureBox1.Image = bmp
    End Sub
End Class

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©chuibin.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。