电商网站规划的开发背景,网站建设维护去哪里学,域名访问网站是什么意思,贵州省省建设厅网站WPF开发者QQ群此群已满340500857 #xff0c;请加新群458041663由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 01—代码如下一、创建CheckCode.xaml代码如下。ResourceDictionary xmlnshttp://schemas.microsoft.c… WPF开发者QQ群此群已满340500857 请加新群458041663 由于微信群人数太多入群请添加小编微信号 yanjinhuawechat 或 W_Feng_aiQ 邀请入群 需备注WPF开发者 01—代码如下一、创建CheckCode.xaml代码如下。ResourceDictionary xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:controlsclr-namespace:WPFDevelopers.ControlsResourceDictionary.MergedDictionariesResourceDictionary SourceBasic/ControlBasic.xaml//ResourceDictionary.MergedDictionariesStyle TargetType{x:Type controls:CheckCode} BasedOn{StaticResource ControlBasicStyle}Setter PropertyBackground Value{x:Null}/Setter PropertyWidth Value100/Setter PropertyHeight Value40/Setter PropertyCursor ValueHand/Setter PropertyTemplateSetter.ValueControlTemplate TargetType{x:Type controls:CheckCode}Image x:NamePART_Image StretchFill Source{TemplateBinding ImageSource}//ControlTemplate/Setter.Value/Setter/Style
/ResourceDictionary二、CheckCode.cs代码如下。using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;namespace WPFDevelopers.Controls
{[TemplatePart(Name ImageTemplateName, Type typeof(Image))]public class CheckCode : Control{private const string ImageTemplateName PART_Image;private Image _image;private Size _size new Size(70, 23);private const string strCode abcdefhkmnprstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789; public static readonly DependencyProperty ImageSourceProperty DependencyProperty.Register(ImageSource, typeof(ImageSource), typeof(CheckCode),new PropertyMetadata(null));/// summary/// 随机生成的验证码/// /summarypublic ImageSource ImageSource{get { return (ImageSource)GetValue(ImageSourceProperty); }set { SetValue(ImageSourceProperty, value); }}/// summary/// 字体颜色/// /summarypublic Brush SizeColor{get { return (Brush)GetValue(SizeColorProperty); }set { SetValue(SizeColorProperty, value); }}public static readonly DependencyProperty SizeColorProperty DependencyProperty.Register(SizeColor, typeof(Brush), typeof(CheckCode), new PropertyMetadata(DrawingContextHelper.Brush));public CheckCode(){this.Loaded CheckCode_Loaded;}private void CheckCode_Loaded(object sender, RoutedEventArgs e){ImageSource CreateCheckCodeImage(CreateCode(4), (int)this.ActualWidth, (int)this.ActualHeight);}public override void OnApplyTemplate(){base.OnApplyTemplate();_image GetTemplateChild(ImageTemplateName) as Image;if (_image ! null)_image.PreviewMouseDown _image_PreviewMouseDown;}private void _image_PreviewMouseDown(object sender, MouseButtonEventArgs e){if (!IsLoaded)return;ImageSource CreateCheckCodeImage(CreateCode(4), (int)this.ActualWidth, (int)this.ActualHeight);}private string CreateCode(int strLength){var _charArray strCode.ToCharArray();var randomCode ;int temp -1;Random rand new Random(Guid.NewGuid().GetHashCode());for (int i 0; i strLength; i){if (temp ! -1)rand new Random(i * temp * ((int)DateTime.Now.Ticks));int t rand.Next(strCode.Length - 1);if (!string.IsNullOrWhiteSpace(randomCode)){while (randomCode.ToLower().Contains(_charArray[t].ToString().ToLower()))t rand.Next(strCode.Length - 1);}if (temp t)return CreateCode(strLength);temp t;randomCode _charArray[t];}return randomCode;}private ImageSource CreateCheckCodeImage(string checkCode, int width, int height){if (string.IsNullOrWhiteSpace(checkCode))return null;if (width 0 || height 0)return null;var drawingVisual new DrawingVisual();var random new Random(Guid.NewGuid().GetHashCode());using (DrawingContext dc drawingVisual.RenderOpen()){dc.DrawRectangle(Brushes.White, new Pen(SizeColor, 1), new Rect(_size));var formattedText DrawingContextHelper.GetFormattedText(checkCode,color:SizeColor, flowDirection: FlowDirection.LeftToRight,textSize:20, fontWeight: FontWeights.Bold);dc.DrawText(formattedText, new Point((_size.Width - formattedText.Width) / 2, (_size.Height - formattedText.Height) / 2));for (int i 0; i 10; i){int x1 random.Next(width - 1);int y1 random.Next(height - 1);int x2 random.Next(width - 1);int y2 random.Next(height - 1);dc.DrawGeometry(Brushes.Silver, new Pen(Brushes.Silver, 0.5D), new LineGeometry(new Point(x1, y1), new Point(x2, y2)));}for (int i 0; i 100; i){int x random.Next(width - 1);int y random.Next(height - 1);SolidColorBrush c new SolidColorBrush(Color.FromRgb((byte)random.Next(0, 255), (byte)random.Next(0, 255), (byte)random.Next(0, 255)));dc.DrawGeometry(c, new Pen(c, 1D), new LineGeometry(new Point(x - 0.5, y - 0.5), new Point(x 0.5, y 0.5)));}dc.Close();}var renderBitmap new RenderTargetBitmap(70, 23, 96, 96, PixelFormats.Pbgra32);renderBitmap.Render(drawingVisual);return BitmapFrame.Create(renderBitmap);}}
}三、新建CheckCodeExample.cs代码如下。UserControl x:ClassWPFDevelopers.Samples.ExampleViews.CheckCodeExamplexmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:dhttp://schemas.microsoft.com/expression/blend/2008 xmlns:localclr-namespace:WPFDevelopers.Samples.ExampleViewsxmlns:wpfdevhttps://github.com/WPFDevelopersOrg/WPFDevelopersmc:Ignorabled d:DesignHeight450 d:DesignWidth800UniformGrid Rows2 Columns2wpfdev:CheckCode SizeColorLimeGreen/wpfdev:CheckCode SizeColorRed/wpfdev:CheckCode SizeColorDodgerBlue/wpfdev:CheckCode SizeColorHotPink//UniformGrid
/UserControl02—效果预览鸣谢素材提供者 - 屈越源码地址如下Githubhttps://github.com/WPFDevelopersOrgGiteehttps://gitee.com/WPFDevelopersOrgWPF开发者QQ群 340500857 | 458041663Githubhttps://github.com/WPFDevelopersOrg出处https://www.cnblogs.com/yanjinhua版权本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。转载请著名作者 出处 https://github.com/WPFDevelopersOrg扫一扫关注我们更多知识早知道点击阅读原文可跳转至源代码