上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属性进行显示。