代码写在onPaint事件中应该没有问题

解决方案 »

  1.   

    這個是因為窗體又重畫了(擊發了OnPaint事件),你需要在OnPaint事件里面寫畫圖的代碼.
      

  2.   

    //重畫
    private void palDraw_Paint(object sender,System.Windows.Forms.PaintEventArgs e)
    {
    PaintArrow(e.Graphics,"");
    }
    //繪制箭頭
    private void PaintArrow(Graphics g,string arrowInfo)
    {
    Font myFont=new Font("Courier New",10);
    Pen redPen=new Pen(Color.Red,3);
    redPen.StartCap=LineCap.Flat;
    redPen.EndCap=LineCap.ArrowAnchor;
    if(this.arrowArrList.Count > 0)
    {
    foreach(object obj in this.arrowArrList)
    {
    Line line = (Line)obj;
    g.DrawLine(redPen,line.Start,line.End);
    g.DrawString(arrowInfo,myFont,new SolidBrush(Color.Blue),line.Start.X,line.End.Y);
    }
    }
    }
      

  3.   

    //重畫
    private void palDraw_Paint(object sender,System.Windows.Forms.PaintEventArgs e)
    {
    PaintArrow(e.Graphics,"");
    }
    //繪制箭頭
    private void PaintArrow(Graphics g,string arrowInfo)
    {
    Font myFont=new Font("Courier New",10);
    Pen redPen=new Pen(Color.Red,3);
    redPen.StartCap=LineCap.Flat;
    redPen.EndCap=LineCap.ArrowAnchor;
    if(this.arrowArrList.Count > 0)
    {
    foreach(object obj in this.arrowArrList)
    {
    Line line = (Line)obj;
    g.DrawLine(redPen,line.Start,line.End);
    g.DrawString(arrowInfo,myFont,new SolidBrush(Color.Blue),line.Start.X,line.End.Y);
    }
    }
    }
      

  4.   

    有没有一个把图像持久在窗体上的方法?
    比如,有一个按扭点一下画了一个园,另一个画了一个方,现在窗体移动了,这样如何在OnPrint里决定重画什么呢?
      

  5.   

    1.You can build a object what can save information of your pained then your can pain in your OnPain() by object