C# 畫線 帶箭頭 不閃
阿新 • • 發佈:2020-11-23
畫線是很簡單的,但是線不是控制元件,不會自動重複畫自己,要在Paint裡面畫
如果要改變線的位置,可以通過Refresh強制重繪,這樣會清除之前的全部圖形,但是缺點是可能會閃(比如拖動控制元件時重繪連線線)
為了不閃,要用背景色重複畫一次,就相當於擦除,但是就是要記錄之前的圖形,以便能夠擦除
下面這段程式碼實現了擦除
container是畫圖的容器,可以是任何控制元件
points是圖形,本例是一個帶箭頭的折線
bClear控制是繪圖還是擦除
坑:Graphics.DrawLines的引數points陣列的每個元素都必須是有效的,不能有多餘的空元素
private staticvoid 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); }