1. 程式人生 > 實用技巧 >C# 畫線 帶箭頭 不閃

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); }