用SliverLight做三国杀(六)让卡牌在界面中动起来

 前面几个随笔分别定义了Card、CardHeap、Player类,我们现在可以把他们结合起来,制作一个控件让玩家出牌了。

定义个一个控件玩家出牌区.xaml,设置为控件

2011040717475359.png

 
   
1 < UserControl
2 xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
3 xmlns:x = " http://schemas.microsoft.com/winfx/2006/xaml "
4 xmlns:d = " http://schemas.microsoft.com/expression/blend/2008 "
5 xmlns:mc = " http://schemas.openxmlformats.org/markup-compatibility/2006 "
6 mc:Ignorable = " d "
7 x:Class = " SilverlightApplication1.玩家出牌区 "
8 d:DesignWidth = " 1029 " d:DesignHeight = " 252 " >
9
10 < Grid x:Name = " LayoutRoot " >
11 < Image Source = " img/b.png " Stretch = " Fill " d:IsLocked = " True " />
12 </ Grid >
13   </ UserControl >

后台代码需要动态加载上去,其实也就是画几个Rectangle,然后给他们鼠标操作的事件

首先定义一个静态变量choose_cardid,用来标记选中的卡牌的ID号。

 public static int choose_CardID=0;//0代表当前没有选中的卡片

接着定义画卡片的函数,通过LayoutRoot.Children.Add(r);将矩形添加至

 
  
1 public void DrawCard(List < Card > card)
2 {
3 // 定义有count张牌
4   cardcount = card.Count;
5 int cc = - 550 , ccend = 550 ;
6 for ( int i = 1 ;i <= card.Count;i ++ )
7 {
8 Rectangle r = new Rectangle();
9 r.Name = " r " + i.ToString();
10 ToolTipService.SetToolTip(r, card[i - 1 ].Name);
11 // r.Tag = card[i - 1].Name;
12   r.Fill = new ImageBrush()
13 {
14
15 ImageSource = new BitmapImage( new Uri(
16
17 card[i - 1 ].ImagePath
18 , UriKind.Relative))
19 };
20 // card.RemoveRange(0, 1);
21  
22 r.Width = 96 ;
23 r.Height = 134 ;
24 r.Margin = new Thickness(cc, 80 , 0 , 0 );
25 LayoutRoot.Children.Add(r);
26
27 cc = cc + 1004 / card.Count; //如果有多张卡片会显示成折叠效果
28 }
29 // int A=0;
30   foreach (var rec in LayoutRoot.Children)
31 {
32 if (rec is Rectangle)
33 {
34 var onerec = rec as Rectangle;
35 // 注册鼠标点击事件
36   onerec.MouseLeftButtonDown += new MouseButtonEventHandler(rec_MouseLeftButtonDown);
37 // onerec.MouseMove += new MouseEventHandler(rec_MouseMove);
38 // onerec.MouseLeave += new MouseEventHandler(rec_MouseLeave);
39  
40 }
41 }
42 // MessageBox.Show(A.ToString());
43   }
44

卡片的折叠效果

cc=cc+1004/card.Count; //如果有多张卡片会显示成折叠效果

 

2011040717550568.png

转载于:https://www.cnblogs.com/moremoretea1983/archive/2011/04/07/2007771.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值