应该是你没有清除原来的字符引起的,每次DrawString的时候你要重绘Background。

解决方案 »

  1.   

    每次DrawString的时候都要重绘Background吗?
      

  2.   

    重绘过了
    如:
    ...DrawString("ffffffffffffffffffffffffffffffffffff",this.Font,new SolidBrush(SystemColors.WindowText),0,0);
      

  3.   

    我是说Background 啦!你跟我讲的是重绘文字!DrawString不负责将所画文字占用的区域的背景恢复成原来的样子,也就是说,你原来画的那部分文字还在,然后你错开了n个象素,再画这些文字,就会出现重影。这个道理就跟你在一张白纸上面写了一遍ffffffffffff,然后再写一遍ffffffffffff是一样的。如果你第二次写的位置和第一次的一模一样,那就不会发现问题,如果稍微错开了一点就会出现重影。解决的办法是,在第二次重写的时候把原来写了ffffffffffff的地方的背景重新画一下,使得这片地方好像什么都没有发生过。也就是说应该这么做:FillRectangle(...);
    DrawString(...);
      

  4.   

    背景我当然重绘过了的,我是说比如
    应该显示"fffffffffffffff"的,
    却成了"f f f f f f fffffffffffff"
      

  5.   

    你重绘的起点不对,你不要用ffffffffff,你用123456789看看,看看是不是这样的:
    1 1 1 1 1 123456789
      

  6.   

    起点不对? 有什么不对?记事本中就不会出现ffffffffffffffffffffffffff时重叠,但我的代码就会,应该是哪个地方不对~```或者有字距的问题(我认为应该是这样了)
      

  7.   

    比如一开始是
     ffffffff
    ^绘制背景多绘出来的一道白边然后第二次画的是:
       fffffffff
      ^绘制背景多绘出来的一道白边将两者一重合就变成了:
     f fffffffff
      ^第二次画的时候的白边把原来第一次画的地方覆盖了一部分,但没有完全覆盖。
     ^第一次画的f由于没有被覆盖,所以仍然遗留在这里。
    ^这一块不一定有,有的话就是第一次画的时候遗留下来的白边。你不能够用123456789代替ffffff进行一次测试吗?