前面几个随笔分别定义了Card、CardHeap、Player类,我们现在可以把他们结合起来,制作一个控件让玩家出牌了。 定义个一个控件玩家出牌区.xaml,设置为控件
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
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; //如果有多张卡片会显示成折叠效果