C# WPF 实现英雄联盟图片 宝宝识图
2015-05-28 22:36
288 查看
这篇文章是我开通csdn博客的第一篇文章,希望大家多多支持!以后慢慢会有更好的文章分享给大家!谢谢大家!
先看一下运行后的一个效果图。
就是这样一个效果图。你每点击一次一个出现相同的动画,就会更新九宫格里面的图片,然后又产生下一张图片,如果点击错误,就会弹出窗口提醒失败!不多说了上代码,代码还是比较简单的。先是一个前台界面的代码,主要代码在后台实现,所以,前台还是比较简单的。
下面就是后台代码了,也不是特别的难,我呢注释也加的比较详细。
注释也比较详细,所以就不多说了。点击打开链接代码大家可以去我的云盘去下载。图片资源也在云盘里面。到这今天的所有内容就全部完成了,希望大家支持!
先看一下运行后的一个效果图。
就是这样一个效果图。你每点击一次一个出现相同的动画,就会更新九宫格里面的图片,然后又产生下一张图片,如果点击错误,就会弹出窗口提醒失败!不多说了上代码,代码还是比较简单的。先是一个前台界面的代码,主要代码在后台实现,所以,前台还是比较简单的。
<Window x:Class="_201524jiugongge.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="481" Width="670" Loaded="Window_Loaded"> <Canvas Name="shouhu"> <Border Name="xianshi" Width="670" Height="430" Background="BlueViolet" CornerRadius="40" Opacity="0.7"> </Border> </Canvas> </Window>大家可以看到Canvas里面有一个name,这个主要是在后台引用的。希望大家注意。
下面就是后台代码了,也不是特别的难,我呢注释也加的比较详细。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Media.Animation;//注意的是这里要导入动画的命令。 using System.Windows.Threading; namespace _201524jiugongge { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { int[] num; Random ran = new Random(); Storyboard sto = new Storyboard(); Label la = new Label(); Image imgleft = new Image(); public MainWindow() { InitializeComponent(); this.WindowStyle = System.Windows.WindowStyle.None;//去边框 this.AllowsTransparency = true;//透明 this.Background = Brushes.Transparent;//背景透明5 this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;//剧中 this.Width = 800;//设置宽度 this.Height = 800;//设置高度 Create(); } private void Create() { string[] name;//string数组,用来存放英雄的名字 name = new string[51] { "暗裔剑魔", "九尾妖狐", "暗影之拳", "牛头酋长", "殇之木乃伊", "标双鸷鸟", "黑暗之女", "寒冰射手", "沙漠皇帝","盲僧","机器人","复仇焰魂","光辉女郎","皮城女警","魔蛇之拥","虚空恐惧","忍者神龟","诺克萨斯","皎月女神","荣耀行刑官","祖安狂人","蜘蛛女王","寡妇制造者","探险家" ,"末日使者","无双剑姬","潮汐海陵","哨兵之殇","海盗船长","德玛西亚","机械公敌","酒桶","阎王罗","战争之神","大发明家","刀锋意志","琴瑟仙女","皇子","武器大师","小白脸","暴走萝莉","冰霜女巫","赛利亚","死亡颂唱","GSD","不祥之刃","战争之王","狂暴的心","虚空魔石","深渊巨口","诡术妖姬"}; num = new int[9];//产生九个随即的图片 for (int i = 0; i < num.Length; i++) { num[i] = ran.Next(51); for (int j = 0; j < i; j++) { if (num[i] == num[j]) { i--; break; } } }//循环产生图片不重复 //添加图片 la.Width = 400;//添加一个Lable la.Height = 80; la.FontSize = 42; la.Foreground = Brushes.Gold; la.FontFamily = new System.Windows.Media.FontFamily("微软雅黑");//设置字体 la.Content = "MY HERO"; Canvas.SetLeft(la, 400);//设置标签的位置 Canvas.SetTop(la, 50); for (int i = 0; i < num.Length; i++) { Border b = new Border();//出创建一个Border b.Width = 100; b.Height = 100; b.MouseEnter += new MouseEventHandler(b_MouseEnter);//添加鼠标进入离开事件 b.MouseLeave += new MouseEventHandler(b_MouseLeave); Image img = new Image();//创建英雄图片 img.MouseDown += new MouseButtonEventHandler(img_MouseDown);//图片的鼠标事件 img.Source = new BitmapImage(new Uri("IMG/" + num[i] + ".png", UriKind.Relative));//添加图片资源 Canvas.SetLeft(b, 50 + i % 3 * b.Width + (i % 3) * 5);//设置图片显示的位置 Canvas.SetTop(b, 50 + i / 3 * b.Height + (i / 3) * 5); b.Child = img;//给图片添加一个Border,图片是边框的子集 img.Tag = name[num[i]];//将英雄的名字添加到一股string的数组里面 // img.Tag = ; // la.Content = img.Tag; shouhu.Children.Add(b);//给一个Canvans起一个nane得值,将Border资源添加到窗体里面去 } //用来产生一个对比的图片 int x = ran.Next(9);//随即产生九个数字 imgleft.Width = 150; imgleft.Height = 150;//设置图片的高度,宽度,以及位置 imgleft.Tag = name[num[x]];//将对应的英雄的名字覆给便签 // imgleft.Tag = name[ran.Next(9)]; imgleft.Source = new BitmapImage(new Uri("IMG/" + num[x] + ".png", UriKind.Relative)); //从51张图片里面随即产生一张图片 Canvas.SetLeft(imgleft, 420); Canvas.SetTop(imgleft, 140); shouhu.Children.Add(imgleft);//添加到窗体中去 la.Content = imgleft.Tag;//获取英雄的名字 shouhu.Children.Add(la);//将标签添加到窗体当中去 DoubleAnimation da = new DoubleAnimation(0, 150, TimeSpan.FromSeconds(3));//创建单点之间动画 Storyboard.SetTarget(da, imgleft);//添加到 Storyboard.SetTargetProperty(da,new PropertyPath("(Height)"));//动画的风格 sto.Children.Add(da);//添加到动画班里面 sto.Begin();//开始动画 } void img_MouseDown(object sender, MouseButtonEventArgs e) { Image img = (Image)sender; if (img.Tag.ToString() == imgleft.Tag.ToString()) { shouhu.Children.Clear();//每次随即是起初上一次的内容 shouhu.Children.Add(xianshi); Create(); } else { MessageBox.Show("失败"); } } void b_MouseLeave(object sender, MouseEventArgs e) { Border b = (Border)sender; b.BorderThickness = new Thickness(0); } void b_MouseEnter(object sender, MouseEventArgs e) { Border b = (Border)sender; b.BorderThickness = new Thickness(3); b.BorderBrush = Brushes.Gold; } private void Window_Loaded(object sender, RoutedEventArgs e) { } } }从代码里面可以看到,我将所有英雄的图片放在一个数组里面,由于英雄太多,所以只有51张英雄的图片,大家也可以添加!
注释也比较详细,所以就不多说了。点击打开链接代码大家可以去我的云盘去下载。图片资源也在云盘里面。到这今天的所有内容就全部完成了,希望大家支持!
相关文章推荐
- C# 正则表达式 调试 20150528
- C#程序开发中经常遇到的10条实用的代码
- C# 网页画图
- C#中如何创建xml文件 增、删、改、查 xml节点信息
- C#实现两接口中同名方法实例分析
- c#获取网卡的ip等信息
- C#获取当前应用程序所在路径及环境变量等信息
- winform C# 获取区分物理网卡、虚拟网卡及无线网卡
- C#实现系统关机、重启、注销等操作
- 46. C# -- 部分方法和部分类(partial)
- [转].tostring设置格式。C# tostring 格式化输出
- 45. C# -- 创建和使用DLL
- C#中Abstract和Virtual
- c#-关于自动属性的思考
- 【C#】让DataGridView输入中实时更新数据源中的计算列
- C# 获取指定深度的treeview
- C# Invoke
- c# socket编程简单例子
- NET 2.0(C#)调用ffmpeg处理视频的方法
- 用C#执行命令行的命令,执行开机启动