不想整個(gè)重畫,最好用單色的背景,例如黑色,線條是白色的
創(chuàng)新互聯(lián)是少有的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、營(yíng)銷型企業(yè)網(wǎng)站、成都微信小程序、手機(jī)APP,開發(fā)、制作、設(shè)計(jì)、友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年成立,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶好評(píng)
用變量把線條的內(nèi)容備份
當(dāng)想改變線條的位置或者長(zhǎng)度之前,先用存下來(lái)的變量以黑色重畫一次,覆蓋原來(lái)的白色線條
然后再畫新的白色線條,這種重畫方法比較節(jié)省資源
假如需要用花哨的背景或者圖片當(dāng)背景,也可以用局部重回的方式。
代碼就不提供了,只提供思路。
可以把所有畫的線都保存在一個(gè)列表中,畫的時(shí)候全部畫出即可。如下:
Public?Class?Form1
Class?Line? ? ? '直線類
? Public?Point1,?Point2?As?Point? ? ?'成員,直線的兩個(gè)端點(diǎn)
? Sub?New(p1?As?Point,?p2?As?Point)? ?'構(gòu)造方法
? ? ? Point1?=?p1
? ? ? Point2?=?p2
? End?Sub
? Public?Sub?Draw(g?As?Graphics)? ? ? '繪制方法
? ? ? g.DrawLine(Pens.Black,?Point1,?Point2)
? End?Sub
End?Class
Private?Lines?As?New?List(Of?Line)? ? ? '列表用于保存所有畫下的直線
Private?Sub?Form1_Load(sender?As?Object,?e?As?EventArgs)?Handles?MyBase.Load
? BackColor?=?Color.White
? DoubleBuffered?=?True? ? ? ?'開啟雙緩沖可有效避免閃爍
End?Sub
Private?Sub?Form1_MouseDown(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseDown
? Lines.Add(New?Line(e.Location,?e.Location))? ? ?'在直線列表中添加直線
End?Sub
Private?Sub?Form1_MouseMove(sender?As?Object,?e?As?MouseEventArgs)?Handles?Me.MouseMove
? If?e.Button??Windows.Forms.MouseButtons.Left?Then?Return?'左鍵未按下
? '鼠標(biāo)拖動(dòng)時(shí)改變列表最后一條直線(也即當(dāng)前直線的第二個(gè)端點(diǎn))
? Lines(Lines.Count?-?1).Point2?=?e.Location
? Refresh()? ? ? ?'刷新窗體
End?Sub
'在Form的Paint事件中繪制所有直線,每次Form1重繪時(shí)都會(huì)觸發(fā)Paint事件
'PS:?也可以通過重寫OnPaint方法來(lái)達(dá)到類似的效果
Private?Sub?Form1_Paint(sender?As?Object,?e?As?PaintEventArgs)?Handles?Me.Paint
? e.Graphics.SmoothingMode?=?Drawing2D.SmoothingMode.AntiAlias? ? '開啟抗鋸齒
? For?Each?l?In?Lines? ? ?'遍歷所有直線
? ? ? l.Draw(e.Graphics)? '調(diào)用繪制方法,傳入的參數(shù)可以理解為畫布
? Next
End?Sub
End?Class
運(yùn)行效果:
繪圖是系統(tǒng)內(nèi)部操作的,不需要懂原理
方法就在那里,只有會(huì)用和不會(huì)用,你的代碼告訴它繪制,它就會(huì)繪制。它(方法)究竟如何去繪制的并不是重點(diǎn),反正它會(huì)繪制。
drawline(繪線)方法很簡(jiǎn)單,第一個(gè)參數(shù)是pen,它確定線條的顏色、寬度和樣式。第二、第三個(gè)參數(shù)都是point類型,確定兩個(gè)點(diǎn)的位置,繪制直線。