浪漫骑士必胜

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  145 随笔 :: 2 文章 :: 574 评论 :: 33万 阅读

这些年我收集的GDI+代码2

  这些年在工作中有空的时候经常拿VS出来画个图玩玩,还是蛮有意思的事情。下面我们就来看看用GDI+是如何实现验证码功能的吧。

  首先,我们先来看看如何在winform上面写文字,以此来做个铺垫。

 

图一、文字效果图

 

图二、验证码

  当我们看到了一个验证码的时候,我们有什么思路呢?是不是看到了数字长的很奇怪呢?是不是单击的时候字会改变呢?是不是字体的颜色也不一样呢?是不是一眼看不清呢?这样做的目的都是为了防止某些邪恶的人用机器来注册。

  思路1:里面的数是随机生成的

  下面进入正式的部分。

  1. 验证码得到随机数

我们在网上点击的时候,是不是点击的是一张图片呢?所以应该在窗体上拖一个图片控件,而且用的是图片的点击事件。

 

图三、验证码得到随机数

我在代码上的注释非常清晰,大家可以参见我上面的注释。

到这步,我们面临两个问题,一个是字体,一个是颜色。那么,我们需要两个数组,一个放字体,一个放颜色。

 

图四、给验证码改变颜色和字体

 

图五、完善验证码的颜色和字体

每画一次上一个颜色,所以上面的代码中用for循环。当我们实现到这一步的时候就差最后数字上面的噪点了,大家想一想,是不是就差一些线呢?这些线的长度最常到哪儿?比如:画十条线的话,就是一个for循环。

 

图六、画噪点

  最终,经过我们的努力来看看最后的效果图吧。

 

图七、最后的效果图

  当我们逐渐的接触到aspdot.net的时候,我们会发现这样的验证码是不用我们手工绘制的,然而,在画验证码时我们用的基础的编程思路是需要掌握的。很多精美的GDI+图都是这么做出来的。


作者近期文章:

posted on   小事好  阅读(2463)  评论(14编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示