在自定义控件的过程中需要重新绘制,遇到窗体拖动到屏幕外或控件滚动到显示区域外的情况下会有现实错乱的情况,虽说第一想法是觉得控件的Location变了,不再是0,0但是一直找不到原因.
表现形式如下:
后来看了下代码,当时的代码如下:
//画背景
e.Graphics.Clear(BackColor);
//画边框
e.Graphics.DrawRectangle(new Pen(Border_Color),e.ClipRectangle);
//画三角
e.Graphics.DrawLines(new Pen(Border_Color, 1f), new Point[] { new Point(Width - 45, 25), new Point(Width - 32, 38), new Point(Width - 19, 25) });//三角
问题出在e.ClipRectangle,不要用这个属性来获取矩形,可以定义一个矩形
Rectangle Rect = new Rectangle(0, 0, Width, Height);
替换原来的绘制函数
e.Graphics.DrawRectangle(new Pen(Border_Color),Rect);
问题解决,DrawString同理。