//生成随机数字
            System.Random a = new Random(System.DateTime.Now.Millisecond);
            Int32 A = a.Next(1,10);
            Int32 B = a.Next(10,30);
            Label6.Text = A + "加上" + B + "等于多少?";
如果直接输出到页面的话,那么很轻易的就能通过正则拿到2个数字了,我想把这段文字变成图片,请问代码怎么实现,网上搜索到的都是直接生成验证码的。也就是说把:4加上7等于多少?  这句话写到一个图片里,这样应该就没那么容易识别到了。

解决方案 »

  1.   

    object a=New DataTable().Compute(string.Format("{0}+{1}",A,B),"");   FontStyle fs = 0;
                Font a = new Font("宋体", 150, fs);
                Bitmap bmp = new Bitmap(300, 300);
                Brush b = Brushes.Black;
                Graphics g = Graphics.FromImage(bmp);
                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;            g.DrawString(o.ToString(), a, b, new PointF(10, 10));
                g.Dispose();
                bmp.Save("D:\\c.png");
      

  2.   

    http://ningbo-seo.javaeye.com/blog/776247http://winnerking2008.blog.163.com/blog/static/2543005200755103912826/
      

  3.   

    思路就是楼主把加法运算通过GDI+的DrawString方法把字符串画出来,然后记录每次的加法值,进行验证的时候用户输入的结果和这个加法值比较,具体DrawString的代码:object a=New DataTable().Compute(string.Format("{0}+{1}",A,B),"");  FontStyle fs = 0;
      Font a = new Font("宋体", 150, fs);
      Bitmap bmp = new Bitmap(300, 300);
      Brush b = Brushes.Black;
      Graphics g = Graphics.FromImage(bmp);
      g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;  g.DrawString(o.ToString(), a, b, new PointF(10, 10));
      g.Dispose();
      bmp.Save("D:\\c.png");