先看代码.:  private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Bitmap bmp = new Bitmap(this.Width, this.Height);
            this.pictureBox1.Image = bmp;            gra = Graphics.FromImage(this.pictureBox1.Image);
            gra.SmoothingMode = SmoothingMode.HighQuality;
            linePen = new Pen(Color.Red, (float)0.5);
            linePen.CustomEndCap =  new System.Drawing.Drawing2D.AdjustableArrowCap(4,8, true);
            gra.DrawLine(linePen, new Point(10, 10), new Point(200, 50));
           
        }        private void button1_Click(object sender, EventArgs e)
        {
               
           // gra.SmoothingMode = SmoothingMode;
            linePen = new Pen(Color.White, (float)0.5);
             linePen.CustomEndCap = new System.Drawing.Drawing2D.AdjustableArrowCap(4, 8, true);
            gra.DrawLine(linePen, new Point(10, 10), new Point(200, 50));
            this.pictureBox1.Invalidate();
        }我的意思是我的图片上画了一条红线,我再用一条白线将红线给覆盖掉,(功能类似橡皮檫的功能,我没想到过其它的办法)
但问题就出现在这里.如果用了消除锯齿.(必须使用这个功能)
白线覆盖红线后就会留下一些点点(这些点点应该是消除锯齿时用来添充那些锯齿的点点)
请问大家该怎么来处理?

解决方案 »

  1.   

    你可以不必使用这个橡皮檫的功能。你可以把所有要绘制的图像放到一个集合里,每次更新都重新把集合里的所有要画的对象都画一次,如果想去掉某一个图像,比如一个线段,那么可以从集合里Remove掉,然后再重画所有的。使用橡皮檫的功能有的时候有问题,比如图形有覆盖的情况的时候要清除上面的一个对象那么下面的也就给擦掉了。实际上重新绘制所有集合里的图像对象的方法是可行的,每次都绘制应该绘制的。
      

  2.   

    to : hbxtlhx(平民百姓-自已动手,丰衣足食)是这样的:
    我生成的图片中有若干个矩形.类似一个树.(之间的关系用线来连起来)
    第个矩形代表一下节点,当我把鼠标移动到某一下矩形上时, 将他的上级与子级之间的线变色来显示.不知我是否说清楚.在画这个树的时候会很慢.(好中鼠标每次移动都重新来画这个树的画,会很慢,
    所以我只考虑将他们之间的线变色,这样程序似乎更快.更符合思路)你说的擦除的功能,(能否给个小例子,谢) 分小再加..在线等
      

  3.   

    参考一下这里的看一下:
    http://blog.csdn.net/hbxtlhx/archive/2007/08/31/1766913.aspx
      

  4.   

    这个还是重新画的啊....
    不过我问一下.你重画的时候调用 Inflate 这个方法是为什么?(我也是刚接触没几天)希望你帮我解决(橡皮擦的功能. 多谢.)
      

  5.   


    Form1_Paint  中加上
    his.pictureBox1.BackColor = Color.White;效果更明显