Silverlight中验证码生成
public class ValidationCode
{
Random r = new Random(DateTime.Now.Millisecond); /// <summary>
/// 用于在生成验证码
/// </summary>
/// <param name="text">生成验证码的字符串</param>
/// <param name="img">silverlight中的Imge控件</param>
public void CreatImage(string text, Image img)
{
int height =Convert.ToInt32(img.Height);
int width = Convert.ToInt32(img.Width);
Grid Gx = new Grid(); //用于生成干扰线
Canvas cv1 = new Canvas();
for (int i = ; i < ; i++)
{
Polyline p = new Polyline();
for (int ix = ; ix < r.Next(, ); ix++)
{
p.Points.Add(new Point(r.NextDouble() * width,
r.NextDouble() * height));
}
byte[] Buffer = new byte[];
r.NextBytes(Buffer);
SolidColorBrush SC = new SolidColorBrush(Color.FromArgb(,
Buffer[], Buffer[], Buffer[]));
p.Stroke = SC;
p.StrokeThickness = 0.5;
cv1.Children.Add(p);
}
Gx.Children.Add(cv1); //用于生成数字
Canvas cv2 = new Canvas();
int y = ;
int lw = ;
double w = (width - lw) / text.Length;
int h = (int)height;
foreach (char x in text)
{
byte[] Buffer = new byte[];
r.NextBytes(Buffer); //用随机数填充字节数组的元素
SolidColorBrush SC = new SolidColorBrush(Color.FromArgb(,
Buffer[], Buffer[], Buffer[]));
TextBlock t = new TextBlock();
t.TextAlignment = TextAlignment.Center;
t.FontSize = r.Next(h - , h); //返回一个指定范围内的数 设定字体大小<像素高度-3>
t.Foreground = SC; //设置前景色
t.Text = x.ToString();
t.Projection = new PlaneProjection() //对象的透视转换(类似三维效果)
{
RotationX = r.Next(-, ),
RotationY = r.Next(-, ),
RotationZ = r.Next(-, )
};
cv2.Children.Add(t);
Canvas.SetLeft(t, lw / + y * w);
Canvas.SetTop(t, );
y++;
} Gx.Children.Add(cv2); //基于内存管理图像的类
WriteableBitmap W = new WriteableBitmap(Gx, new TransformGroup());
W.Render(Gx, new TransformGroup()); img.Source = W;
}
}
Silverlight中验证码生成的更多相关文章
- java web中验证码生成的demo
首先创建一个CaptailCode类 package com.xiaoqiang.code; import java.awt.*; import java.awt.font.FontRenderCon ...
- 【原创】有关Silverlight中自动生成的类中 没有WCF层edmx模型新加入的对象 原因分析。
前端页面层: 编译老是不通过,报如下如所示错误: -- 然后下意识的查了下 生成的cs文件,没有搜到根据edmx 生成的 对应的类. 结果整理: 1.尽管在 edmx 模 ...
- MVC中验证码的生成
在项目中验证码的生成通常是需要页面无刷新的,所以验证码图片实际是跟在某个input后面的img,通过控制该img来控制验证码显示的位置,例如: <div> <input id=&qu ...
- Android开发中验证码的生成
近期在做电商金融类的项目,验证码的生成方法不可缺少.先学习了一种.经过測试好用.从别处学习的代码,稍修改了一下可选择是否支持识别大写和小写.直接上代码. import android.app.Acti ...
- php 图片验证码生成 前后台验证
自己从前一段时间做了个php小项目,关于生成图片验证码生成和后台的验证,把自己用到的东西总结一下,希望大家在用到相关问题的时候可以有一定的参考性. 首先,php验证码生成. 代码如下: 1.生成图像代 ...
- ASP.NET验证码生成与识别
一般验证码页面只输出一个图片而不进行其他业务处理,所以验证码一般放在一般处理程序(httpHandler)页面中,而如果将验证码生成代码放到一般处理程序中,要将生成验证码保存在Session中,这里我 ...
- ajax原理,验证码生成原理
什么是ajax AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML 指一种创建交互式网页应用的网页开发技术. 不是指一种单一的 ...
- .net验证码生成及使用
验证码的作用: 几年前,大部分网站.论坛之类的是没有验证码的,因为对于一般用户来说验证码只是增加了用户的操作,降低了用户的体验.但是后来各种灌水机器人.投票机器人.恶意注册机器人层出不穷,大大增加了网 ...
- 验证码生成-->漂亮啊
验证码不用输出太多的HTML代码,直接创建一个一般处理程序,直接上代码 public class VCode : IHttpHandler { HttpContext context = null; ...
随机推荐
- dispatherServlet拦截所有请求,但是不拦截JSP和其他配置的servelt
不是顺序问题,是就不拦截Servlet 不是load-on-startup启动先后顺序问题,是就是不拦截Servlet. SpringMVC默认用的是第二个 //<url-pattern> ...
- Java泛型相关总结(下)
约束与局限性 不能用基本类型实例化类型参数 不能像Pair<double>这样调用,只能Pair<Double>,原因是类型擦除 运行时类型查询只使用于原始类型 虚拟机中的对象 ...
- 18.25 JLink调试程序步骤
S3C2440开发板启动时候选择NandFlash启动,然后输入如下命令: r /*复位cpu*/ h ...
- innobackupex: error while loading shared libraries: libssl.so.6
我遇到过这个问题,但由于测试环境不允许上网,所以虽然搜到了一篇解决办法,但我也未亲自测试,先记录下来别人的解决办法. 参考文章:http://blog.itpub.net/29654823/views ...
- Android Studio搭建系统App开发环境
一.前言 在Android的体系中开发普通app使用Android Studio这一利器会非常的方便.但是开发系统app可能就会有些吃力,不过经过一些配置仍然会 很简单.我们知道系统app因为涉及到一 ...
- VsCode配置go环境及插件安装
在vscode中安装go插件. 安装git. 在%GOPATH%\src\目录下,建立golang.org文件夹,并再新建x文件夹. 目录为 "%GOPATH\src\golang.org\ ...
- 13行代码实现:Python实时视频采集(附源码)
一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...
- Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2
1:安装好centos 7 操作系统: 虚拟机安装centos 7,在vmware中一步步来就可以成功. 2:安装vim 最小化安装的系统只有vi编辑器,这里装一下vim,个人习惯,可以不安装, 那么 ...
- vmware 中配置centos 7 静态IP
虚拟机配置成静态IP可以保证每次宿主机器重启后,虚拟机的IP保持不变,这对于学习集群环境下的软件(如hadoop集群,mysql等数据库集群)很有用. vmware workstation 中装好li ...
- Java五种单例区别
详细请参考如下链接: http://www.voidcn.com/article/p-shzgsluz-bqa.html https://blog.csdn.net/android_freshman/ ...