C# 如何实现视频而不是图像的拖放?
我似乎无法实现视频文件(.mp4)的拖放功能,只有图像。每次我试图拖动视频时,程序都会崩溃。这是我的下拉画布:C# 如何实现视频而不是图像的拖放?,c#,xaml,uwp,C#,Xaml,Uwp,我似乎无法实现视频文件(.mp4)的拖放功能,只有图像。每次我试图拖动视频时,程序都会崩溃。这是我的下拉画布: private async void mainCanvas_Drop(object sender, DragEventArgs e) { Image img = new Image(); img.Width = 200; img.Height = 150; BitmapImage bm = new BitmapIm
private async void mainCanvas_Drop(object sender, DragEventArgs e)
{
Image img = new Image();
img.Width = 200;
img.Height = 150;
BitmapImage bm = new BitmapImage();
if (e.DataView.Contains(StandardDataFormats.StorageItems))
{
var storageItems = await e.DataView.GetStorageItemsAsync();
foreach (StorageFile file in storageItems)
{
var stream = await
file.OpenAsync(Windows.Storage.FileAccessMode.Read);
await bm.SetSourceAsync(stream);
img.Source = bm;
}
img.RenderTransform = new CompositeTransform();
img.ManipulationMode = ManipulationModes.All;
img.ManipulationStarted += mPlayer_ManipulationStarted;
img.ManipulationCompleted += mPlayer_ManipulationCompleted;
img.ManipulationDelta += mPlayer_ManipulationDelta;
mainCanvas.Children.Add(img);
Canvas.SetLeft(img, e.GetPosition(mainCanvas).X);
Canvas.SetTop(img, e.GetPosition(mainCanvas).Y);
}
}
您不能将视频作为源设置为
BitmapImage
BitmapImage bm=新的BitmapImage();
等待bm.SetSourceAsync(流)
您需要使用MediaPlayerElement
播放视频。看一看这张照片
编辑
我必须删除图像的拖放。有没有一种方法可以检测到
Im投放的项目是图像还是视频
好的,所以我设法让它,我可以拖放mediaelement(视频)在。但要做到这一点,我必须删除拖放图像。有没有办法检测Im投放的项目是图像还是视频?编辑:我如何粘贴我当前的代码?你可以随时检查存储文件的文件类型,并基于此处理你的代码。很抱歉,我真的不知道如何粘贴。哈哈,你介意帮我吗?好的,当然。我将把它添加到我的回答中。我已经添加了解决方案
private async void mainGrid_Drop(object sender, DragEventArgs e)
{
Image img = new Image();
img.Width = 200;
img.Height = 150;
BitmapImage bm = new BitmapImage();
MediaPlayerElement mediaPlayerElement = new MediaPlayerElement();
if (e.DataView.Contains(StandardDataFormats.StorageItems))
{
var storageItems = await e.DataView.GetStorageItemsAsync();
foreach (StorageFile file in storageItems)
{
if (file.FileType == ".mp4")
{
mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(file);
mainGrid.Children.Add(mediaPlayerElement);
}
else
{
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
await bm.SetSourceAsync(stream);
img.Source = bm;
mainGrid.Children.Add(img);
}
}
}
}