30天学通C#项目案例开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.5.3 添加图片功能实现

在“添加联系人”窗口中,用户可以拖动一幅图片到添加图片区域,也可以单击按钮选择一幅图片。拖动图片的操作与2.5.2节介绍的拖动音频和视频的代码非常相似,代码如下所示。

代码位置:见光盘中本章源代码的Controls\ AddNewFriendControl.xaml.cs文件。

01         private void imgGrid_Drop(object sender, DragEventArgs e)
02         {
03            string[] fileNames = e.Data.GetData   //获取拖放的文件名
04               (DataFormats.FileDrop, true) as string[];
05            if (fileNames.Length > 0)
06            {                    //将拖放的文件保存到FriendContent的PhotoUrl中
07               friendContent.PhotoUrl = fileNames[0];
08               photoSrc.Source = new BitmapImage
                                  //将拖放的文件作为Image控件的路径显示
09                  (new Uri(friendContent.PhotoUrl));
10            }
11            //确保已经处理了事件,那么将不会调用基类的方法处理拖动操作
12            e.Handled = true;
13         }

● 第03~04行代码获取拖放的文件名数组。

● 第05~09行代码将拖放的文件名赋给FriendContent的PhotoUrl属性。同时将文件名赋给Image的Source属性进行显示。

● 第12行代码确保不会调用基类的拖放操作处理代码。

用户也可以单击按钮选择图片,当单击按钮 时,将弹出一个选择图片的对话框,选择按钮的单击事件代码如下所示。

代码位置:见光盘中本章源代码的Controls\ AddNewFriendControl.xaml.cs文件。

01         private void btnChooseNewImage_Click(object sender, RoutedEventArgs e)
02         {
03            Point topleft =
04               this.PointToScreen(new Point(0, 0));   //获取屏幕左上角相对坐标
05            DisplayStyle newDisplayStle = (DisplayStyle)Application.
06               Current.Properties["SelectedDisplayStyle"];  //获取显示风格
07            double heightOffset = newDisplayStle ==
08               //如果是三维模式则高度偏移20,否则不偏移
09               DisplayStyle.ThreeDimension ? 20 : 0;
10            AddFriendImageWindow addImageWindow =
11               new AddFriendImageWindow();    //打开选择图片窗口
12            (addImageWindow as Window).Height = this.Height + heightOffset;
13            (addImageWindow as Window).Width = this.Width;
14            (addImageWindow as Window).Left = topleft.X;
15            (addImageWindow as Window).Top = topleft.Y;
16            addImageWindow.ShowDialog();      //设置了其位置和大小后,显示出来
17            if (!string.IsNullOrEmpty(addImageWindow.SelectedImagePath))
18            {                                 //获取选择的图片,赋给Image进行显示
19               friendContent.PhotoUrl = addImageWindow.SelectedImagePath;
20               photoSrc.Source=new BitmapImage(new Uri(friendContent.PhotoUrl));
21            }
22         }

● 第03~04行获取屏幕左上角的坐标。

● 第05~06行代码获取当前的显示风格枚举值。

● 第07~09行代码表示如果显示风格为三维模式时将偏移20个设备无关单位。

● 第10~16行代码实例化AddFriendImageWindow窗体,设置其位置和大小,并显示出来供用户选择。

● 第17~22行代码,将用户选择的文件赋给FriendContent的PhotoUrl属性,并赋给Image的Source属性进行显示。