C# 画线 带箭头 不闪

画线是很简单的,但是线不是控件,不会自动重复画自己,要在Paint里面画

如果要改变线的位置,可以通过Refresh强制重绘,这样会清除之前的全部图形,但是缺点是可能会闪(比如拖动控件时重绘连接线)

为了不闪,要用背景色重复画一次,就相当于擦除,但是就是要记录之前的图形,以便能够擦除

下面这段代码实现了擦除

container是画图的容器,可以是任何控件

points是图形,本例是一个带箭头的折线

bClear控制是绘图还是擦除

坑:Graphics.DrawLines的参数points数组的每个元素都必须是有效的,不能有多余的空元素

        private static void DrawLines(Control container, Point[] points,bool bClear)
        {
            Pen pen = new Pen(Color.Red, 3);
            if (bClear)
            {
                pen.Color = container.BackColor;
            }
            pen.EndCap = LineCap.ArrowAnchor;
            Graphics g = container.CreateGraphics();

            g.DrawLines(pen, points);
        }
原文地址:https://www.cnblogs.com/shadowpigg/p/14025444.html