這些年我收集的GDI+代碼2
這些年在工作中有空的時候經常拿VS出來畫個圖玩玩,還是蠻有意思的事情。下面我們就來看看用GDI+是如何實現驗證碼功能的吧。
首先,我們先來看看如何在winform上面寫文字,以此來做個鋪墊。
圖一、文字效果圖
圖二、驗證碼
當我們看到了一個驗證碼的時候,我們有什么思路呢?是不是看到了數字長的很奇怪呢?是不是單擊的時候字會改變呢?是不是字體的顏色也不一樣呢?是不是一眼看不清呢?這樣做的目的都是為了防止某些邪惡的人用機器來注冊。
思路1:里面的數是隨機生成的
下面進入正式的部分。
- 驗證碼得到隨機數
我們在網上點擊的時候,是不是點擊的是一張圖片呢?所以應該在窗體上拖一個圖片控件,而且用的是圖片的點擊事件。
圖三、驗證碼得到隨機數
我在代碼上的注釋非常清晰,大家可以參見我上面的注釋。
到這步,我們面臨兩個問題,一個是字體,一個是顏色。那么,我們需要兩個數組,一個放字體,一個放顏色。
圖四、給驗證碼改變顏色和字體
圖五、完善驗證碼的顏色和字體
每畫一次上一個顏色,所以上面的代碼中用for循環。當我們實現到這一步的時候就差最后數字上面的噪點了,大家想一想,是不是就差一些線呢?這些線的長度最常到哪兒?比如:畫十條線的話,就是一個for循環。
圖六、畫噪點
最終,經過我們的努力來看看最后的效果圖吧。
圖七、最后的效果圖
當我們逐漸的接觸到aspdot.net的時候,我們會發現這樣的驗證碼是不用我們手工繪制的,然而,在畫驗證碼時我們用的基礎的編程思路是需要掌握的。很多精美的GDI+圖都是這么做出來的。