在C#中是有一个可以不让窗体闪烁的,可惜我记不得了,帮你UP吧!

解决方案 »

  1.   


    private void frmCurve_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
                           Graphics g =e.Graphics;
                           Pen bluePen =new Pen(Color.Blue);
                           Bitmap locaBitmap = new Bitmap(ClientRectangle.Width,ClientRectangle.Height);
                            Graphics bitmapGraphics = Graphics.FromImage(localBitmap);
                            LineDrawRoutine(bitmapGraphic,bluePen);
                            g.DrawImage(locaBitmap,0,0);
                            bitmapGraphics.Dispose();
                            bluePen.Dispose();
                            localBitmap.Dispose();
                            g.Dispose();
    }
    不知是否能解决你的闪烁问题
      

  2.   

    当然,可以把你要画的改为
      e.Graphics.DrawLine(Pens.Blue,new Point(nMouseX,0),new Point(nMouseX,nHeight));
    e.Graphics.DrawLine(Pens.Blue,new Point(0,nMouseY),new Point(nWidth,nMouseY));
    只是个思路,还没测试
      

  3.   

    stdao(道可道) :
          你的方法我试过了,还是闪的很厉害
    有人能够解决我的问题吗?
      

  4.   

    你做一个控件,用以画直线的
    (要是vb6的话就没有这么麻烦了,有shape控件)然后,用你刚才做的控件代替画线试试,应该就没问题了我原来在vb6里面也用过类似的东西
      

  5.   

    加二个时间延迟器和一个 Boolean 标记变量,譬如延迟 0.1 秒,每 0.1 秒置一个标记,然后 0.01 秒后再复位,在 MouseMove中判断此标记变量再画图。MouseMove 事件是触发非常频繁的事件,所以在 WebForm 上不支持服务器端的 MouseMove 事件,只有 WindowsForm 才支持。
      

  6.   

    private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    Bitmap bm=new Bitmap(this.Width,this.Height);
    Graphics g=Graphics.FromImage(bm);
    g.Clear(this.BackColor);
    Pen pen=new Pen(Color.Black,1);
    g.DrawLine(pen,0,e.Y,this.Width,e.Y);
    g.DrawLine(pen,e.X,0,e.X,this.Height);
    Graphics g1=this.CreateGraphics();
    g1.DrawImage(bm,0,0);
    pen.Dispose();
    bm.Dispose();
    g.Dispose();
    g1.Dispose();
    }
      

  7.   

    public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    // SetStyle(ControlStyles.UserPaint,true);
    SetStyle(ControlStyles.AllPaintingInWmPaint,true);
    SetStyle(ControlStyles.DoubleBuffer,true);
    // SetStyle(ControlStyles.ResizeRedraw, true);
    }