• C#工具:WPF生成图片验证码


    1.使用ImageFormatConvertHelper

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    
    namespace YongAn_WPF
    {
        public class ImageFormatConvertHelper
        {
            [DllImport("gdi32.dll", SetLastError = true)]
            private static extern bool DeleteObject(IntPtr hObject);
            /// <summary>  /// 
            /// 从bitmap转换成ImageSource  /// 
            /// </summary>  /// 
            /// <param name="icon"></param>
            /// <returns></returns>  
            public static ImageSource ChangeBitmapToImageSource(Bitmap bitmap)
            { //Bitmap bitmap = icon.ToBitmap();  
                IntPtr hBitmap = bitmap.GetHbitmap();
                ImageSource wpfBitmap = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(hBitmap, IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
                if (!DeleteObject(hBitmap))
                { throw new System.ComponentModel.Win32Exception(); }
                return wpfBitmap;
            }
        }
    }

    2.使用VerifyCodeHelper

    using System;
    using System.Collections.Generic;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace YongAn_WPF
    {
        public class VerifyCodeHelper
        {
            public static Bitmap CreateVerifyCode(out string code)
            { //建立Bitmap对象,绘图 
                Bitmap bitmap = new Bitmap(200, 60); Graphics graph = Graphics.FromImage(bitmap);
                graph.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);
                Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
                Random r = new Random(); string letters = "ABCDEFGHIJKLMNPQRSTUVWXYZ0123456789";
                StringBuilder sb = new StringBuilder();
                //添加随机的五个字母
                for (int x = 0; x < 5; x++)
                {
                    string letter = letters.Substring(r.Next(0, letters.Length - 1), 1);
                    sb.Append(letter);
                    graph.DrawString(letter, font, new SolidBrush(Color.Black), x * 38, r.Next(0, 15));
                }
                code = sb.ToString();
                //混淆背景
                Pen linePen = new Pen(new SolidBrush(Color.Black), 2);
                for (int x = 0; x < 6; x++) graph.DrawLine(linePen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
                return bitmap;
            }
        }
    }

    3.调用方式 返回Code(验证码内容)

            public string GetImage()
            {
                string code = "";
                Bitmap bitmap = VerifyCodeHelper.CreateVerifyCode(out code);
                ImageSource imageSource = ImageFormatConvertHelper.ChangeBitmapToImageSource(bitmap);
                img.Source = imageSource;
                return code;
            }
  • 相关阅读:
    Kafka项目实战-用户日志上报实时统计之应用概述
    ElasticSearch实战-编码实践
    ElasticSearch实战-入门
    Django如何渲染markdown
    理解相似矩阵
    从向量空间的角度来理解方程组有无解的问题
    凸优化学习笔记(1)-基础概念
    Django如何与JQuery进行数据通信?
    JQuery学习笔记之属性与样式
    JQuery学习笔记之选择器
  • 原文地址:https://www.cnblogs.com/liuyuanjiao/p/10623265.html
Copyright © 2020-2023  润新知