2 Background="Black">
3 <Image x:name="img" RendertransformOrigin="0.5,0.5"
4 Source="Images/avatar_8.jpg" Stretch="Fill">
5 <Image.Rendertransform>
6 <Scaletransform x:name="st"/>
7 </Image.Rendertransform>
8 </Image>
9 <TextBlock x:name="tbTip"
10 FontSize="12"
11 FontFamily="Simsun"
12 Text="你好,请使用鼠标滚轮来调整图片大小"
13 Foreground="White" margin="5"/>
14 <ListBox x:name="lstMenu" WIDth="150" Height="260"
15 HorizontalAlignment="left"
16 VerticalAlignment="top">
17 </ListBox>
18 </GrID> 我们先来看一下程序功能和运行效果: d出右键菜单 切换不同的图片 使用滑轮调整缩放比例0.8倍 使用滑轮调整缩放比例1.8倍 首先我们定义了基于LayoutRoot的鼠标右键和滚轮事件,通过Image来显示被缩放的图片内容,右键菜单显示时会与鼠标的位置始终一致,delTa和Flag分别控制缩放的倍数和每次缩放的大小因数值。 C#: 1 public MouseWheelSample()
2 {
3 InitializeComponent();
4 this.Loaded += new RoutedEventHandler(MouseWheelSample_Loaded);
5 }
6
7 //delTa值
8 private static double delTa = 1;
9 //缩放的增量值
10 private static double flag = 0.1;
11 voID MouseWheelSample_Loaded(object sender,RoutedEventArgs e)
12 {
13 //默认右键菜单是隐藏状态
14 lstMenu.Visibility = System.windows.Visibility.Collapsed;
15 //定义鼠标滚轮事件处理
16 LayoutRoot.MouseWheel += new MouseWheelEventHandler(LayoutRoot_MouseWheel);
17 //定义鼠标左键事件处理
18 LayoutRoot.MouseleftbuttonUp += new MousebuttonEventHandler(LayoutRoot_MouseleftbuttonUp);
19 //定义鼠标右键事件处理
20 LayoutRoot.MouseRightbuttonDown += new MousebuttonEventHandler(LayoutRoot_MouseRightbuttonDown);
21 //定义右键菜单改变项事件处理
22 lstMenu.SelectionChanged += new SelectionChangedEventHandler(lstMenu_SelectionChanged);
23 //添加右键菜单项
24 CreateMenu();
25 }
26 voID CreateMenu()
27 {
28 for (int i = 0; i < 10; i++)
29 {
30 lstMenu.Items.Add(new ListBoxItem()
31 {
32 Content = string.Format("avatar_{0}.jpg",i)
33 });
34 }
35 }
36 voID LayoutRoot_MouseRightbuttonDown(object sender,MousebuttonEventArgs e)
37 {
38 //取得当前菜单位置坐标
39 Point pos = e.Getposition(LayoutRoot);
40 //定位右键菜单
41 lstMenu.margin = new Thickness(pos.X,pos.Y,0);
42 //显示右键菜单
43 lstMenu.Visibility = System.windows.Visibility.Visible;
44 e.Handled = true;
45 }
46 voID lstMenu_SelectionChanged(object sender,SelectionChangedEventArgs e)
47 {
48 //设置图片
49 img.source = new BitmAPImage(new Uri(string.Format("Images/avatar_{0}.jpg"
50 ,lstMenu.Selectedindex),UriKind.relative));
51 }
52 voID LayoutRoot_MouseleftbuttonUp(object sender,MousebuttonEventArgs e)
53 {
54 //隐藏右键菜单
55 lstMenu.Visibility = System.windows.Visibility.Collapsed;
56 }
57 //鼠标滚轮事件
58 private voID LayoutRoot_MouseWheel(object sender,MouseWheelEventArgs e)
59 {
60 if (e.Delta > 0)
61 {
62 //放大
63 delTa += flag;
64 }
65 else
66 {
67 if (delTa > flag)
68 {
69 //缩小
70 delTa -= flag;
71 }
72 }
73 //提示
74 tbTip.Text = "缩放:" + delTa + "倍";
75 //应用缩放
76 st.ScaleX = st.ScaleY = delTa;
77 }
这里的右键菜单我们使用的是ListBox控件隐藏和显示来实现的,在界面上任意位置点击左键时右键菜单就会隐藏,不过这种方式的右键菜单并不是完美,例如不支持多级菜单等。你也可以使用一些三方的菜单控件,例如ContextMenu,或是干脆自己设计个UserControl做为一个右键菜单,通过这个实例相信你对Silverlight 4.0中的鼠标右键事件和滚轮事件有了一个比较完整的了解,另外设置e.Handled的值为true可以隐藏Silverlight插件本身的默认右键菜单。 希望对大家有用! 总结
以上是内存溢出为你收集整理的风云的银光志Silverlight4.0教程之使用鼠标右键事件和滚轮事件全部内容,希望文章能够帮你解决风云的银光志Silverlight4.0教程之使用鼠标右键事件和滚轮事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)