public int upate(StorageVideo entity) { string sql = "update storageVideo set origFilename=@origFilename,url=@url,size=@size" + ",ext=@ext,createTime=@createTime,duration=@duration" + ",storageImageId=@storageImageId,folderId=@folderId" + " where id=@id"; SQLiteParameter[] parameters = { new SQLiteParameter("@origFilename", DbType.String, 100), new SQLiteParameter("@url", DbType.String, 255), new SQLiteParameter("@size", DbType.Int32, 4), new SQLiteParameter("@ext", DbType.String, 10), new SQLiteParameter("@createTime", DbType.String, 30), new SQLiteParameter("@duration", DbType.Int32, 4), new SQLiteParameter("@storageImageId", DbType.Int32, 4), new SQLiteParameter("@folderId", DbType.Int32, 4), new SQLiteParameter("@id", DbType.Int32, 4) }; parameters[0].Value = entity.origFilename; parameters[1].Value = entity.url; parameters[2].Value = entity.size; parameters[3].Value = entity.ext; parameters[4].Value = entity.createTime; parameters[5].Value = entity.duration; parameters[6].Value = entity.storageImageId; parameters[7].Value = entity.folderId; parameters[8].Value = entity.id; int result = Common.SQLiteHelper.ExecuteNonQuery(sql, parameters); return(result); }
/* * 3.4插入视频 Video */ public void insertVideoToPage(DControl ctl) { //获取视频所在的集合 StorageVideo storageVideo = storageVideoBll.get(ctl.storageId); if (storageVideo == null) { storageVideo = new StorageVideo(); storageVideo.url = "/myfile/sysimg/notExists/video.mp4"; storageVideo.origFilename = "演示视频.mp4"; } StorageVideoDto dto = StorageVideoUtil.convert(storageVideo); StorageImage storageImage = storageImageBll.get(dto.storageImageId); dto.storageImageUrl = storageImage?.url; Cfg pageCfg = PageWidthUtil.getPageCfg(pageTemplate.dPage, App.localStorage.cfg); CVideo cVideo = NewControlUtil.newCVideo(ctl, dto, pageCfg, pageTemplate.mqServer, true); System.Windows.Style myStyle = (System.Windows.Style)pageTemplate.container.FindResource("DefaultCVideoStyle"); cVideo.Style = myStyle; cVideo.PreviewMouseLeftButtonDown += control_MouseDown; cVideo.PreviewMouseMove += control_MouseMove; cVideo.PreviewMouseLeftButtonUp += control_MouseUp; //控件上右击显示菜单 cVideo.MouseRightButtonUp += control_MouseRightButtonUp; pageTemplate.container.Children.Add(cVideo); }
//1、插入图片 public StorageVideo insert(StorageVideo entity) { String sql = "insert into StorageVideo(origFilename,url,ext,size,createTime,storageImageId,duration,folderId) values(@origFilename,@url,@ext,@size,@createTime,@storageImageId,@duration,@folderId);select last_insert_rowid();"; SQLiteParameter[] parameters = { new SQLiteParameter("@origFilename", DbType.String, 100), new SQLiteParameter("@url", DbType.String, 255), new SQLiteParameter("@ext", DbType.String, 10), new SQLiteParameter("@size", DbType.Int32, 4), new SQLiteParameter("@createTime", DbType.String, 30), new SQLiteParameter("@storageImageId", DbType.Int32, 4), new SQLiteParameter("@duration", DbType.Int32, 4), new SQLiteParameter("@folderId", DbType.Int32, 4) }; parameters[0].Value = entity.origFilename; parameters[1].Value = entity.url; parameters[2].Value = entity.ext; parameters[3].Value = entity.size; parameters[4].Value = entity.createTime; parameters[5].Value = entity.storageImageId; parameters[6].Value = entity.duration; parameters[7].Value = entity.folderId; DataTable dt = Common.SQLiteHelper.ExecuteQuery(sql, parameters); int id = DataType.ToInt32(dt.Rows[0]["last_insert_rowid()"].ToString()); entity.id = id; return(entity); }
private async void Camera_Click(object sender, RoutedEventArgs e) { var capture = new CameraCaptureUI(); //capture.PhotoSettings.AllowCropping = true; capture.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg; capture.PhotoSettings.MaxResolution = CameraCaptureUIMaxPhotoResolution.HighestAvailable; capture.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4; capture.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.HighestAvailable; var file = await capture.CaptureFileAsync(CameraCaptureUIMode.PhotoOrVideo); if (file != null) { if (file.ContentType.Equals("video/mp4")) { if (Services.SettingsService.Current.SaveCameraMediaInGallery) { await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("UM_yyyyMMdd_HH_mm_ss") + ".mp4", NameCollisionOption.GenerateUniqueName); } ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StorageVideo.CreateAsync(file), false)); } else { if (Services.SettingsService.Current.SaveCameraMediaInGallery) { await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("UM_yyyyMMdd_HH_mm_ss") + ".jpg", NameCollisionOption.GenerateUniqueName); } ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StoragePhoto.CreateAsync(file), false)); } } }
/* * 3.4插入视频 Video */ public void insertVideoToPage(DControl ctl) { //获取视频所在的集合 StorageVideo storageVideo = storageVideoBll.get(ctl.storageId); if (storageVideo == null) { storageVideo = new StorageVideo(); storageVideo.url = "/myfile/sysimg/notExists/video.mp4"; storageVideo.origFilename = "演示视频.mp4"; } StorageVideoDto dto = StorageVideoUtil.convert(storageVideo); StorageImage storageImage = storageImageBll.get(dto.storageImageId); dto.storageImageUrl = storageImage?.url; //foreach (Window win in App.appWindowList) //{ // string type = win.GetType().Name; // Console.WriteLine("窗口类型:" + type); //} Cfg pageCfg = PageWidthUtil.getPageCfg(dPage, App.localStorage.cfg); CVideo cVideo = NewControlUtil.newCVideo(ctl, dto, pageCfg, pageTemplate1.mqServer, false); loadAllAnimation(cVideo, ctl); mainContainer.Children.Add(cVideo); }
private async void More_Click(object sender, RoutedEventArgs e) { var picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.Thumbnail; picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; picker.FileTypeFilter.AddRange(Constants.MediaTypes); var files = await picker.PickMultipleFilesAsync(); if (files != null) { foreach (var file in files) { if (file.ContentType.Equals("video/mp4")) { Items.Add(await StorageVideo.CreateAsync(file, true)); } else { Items.Add(new StoragePhoto(file) { IsSelected = true }); } } } }
private void insertCVideoBackground(StorageVideo storageVideo) { Cfg cfg = new Cfg(); cfg.screenWidth = Convert.ToInt32(pageTemplate.ActualWidth); cfg.screenHeight = Convert.ToInt32(pageTemplate.ActualHeight); DControl ctl = new DControl(); ctl.name = "CVideoBackground"; ctl.width = cfg.screenWidth; ctl.height = cfg.screenHeight; ctl.left = 0; ctl.top = 0; ctl.storageId = storageVideo.id; StorageVideoDto dto = StorageVideoUtil.convert(storageVideo); StorageImage storageImage = storageImageBll.get(dto.storageImageId); dto.storageImageUrl = storageImage?.url; CVideoBackground cVideoBackground1 = new CVideoBackground(dto, true); cVideoBackground1.Name = "CVideoBackground"; cVideoBackground1.HorizontalAlignment = HorizontalAlignment.Left; cVideoBackground1.VerticalAlignment = VerticalAlignment.Top; cVideoBackground1.Margin = new Thickness(ctl.left, ctl.top, 0, 0); cVideoBackground1.Width = ctl.width; cVideoBackground1.Height = ctl.height; pageTemplate.backgroundVideo.Children.Add(cVideoBackground1); }
/* * 插入视频背景 * * @param storageVideo 视频信息 * * @param pageWidth 页面宽度 * * @param pageHeight 页面高度 * */ private void insertCVideoBackground(StorageVideo storageVideo, int pageWidth, int pageHeight) { DControl ctl = new DControl(); ctl.name = "CVideoBackground"; ctl.width = pageWidth; ctl.height = pageHeight; ctl.left = 0; ctl.top = 0; ctl.storageId = storageVideo.id; StorageVideoDto dto = StorageVideoUtil.convert(storageVideo); StorageImage storageImage = storageImageBll.get(dto.storageImageId); dto.storageImageUrl = storageImage?.url; CVideoBackground cVideoBackground1 = new CVideoBackground(dto, true); cVideoBackground1.Name = "CVideoBackground"; cVideoBackground1.HorizontalAlignment = HorizontalAlignment.Left; cVideoBackground1.VerticalAlignment = VerticalAlignment.Top; cVideoBackground1.Margin = new Thickness(ctl.left, ctl.top, 0, 0); cVideoBackground1.Width = ctl.width; cVideoBackground1.Height = ctl.height; backgroundVideo.Children.Add(cVideoBackground1); }
/* * 保存视频 */ private void Submit_Button_Click(object sender, RoutedEventArgs e) { DControl currDControl = (DControl)currElement.Tag; StorageVideo storageVideo = storageVideoBll.get(this.currDControl.storageId); if (storageVideo == null) { MessageBox.Show("视频不存在"); return; } //更新到数据库 DControl dControl = dControlBll.get(currDControl.id); dControl.storageId = this.currDControl.storageId; dControlBll.update(dControl); currElement.Tag = dControl; //更新页面控件信息 //获取视频所在的集合 //StorageVideo storageVideo = storageVideoBll.get(ctl.storageId); //获取视频列表 StorageVideoDto dto = StorageVideoUtil.convert(storageVideo); StorageImage storageImage = storageImageBll.get(dto.storageImageId); dto.storageImageUrl = storageImage?.url; CVideo cVideo = (CVideo)currElement; cVideo.updateElement(dControl, true, dto); Close(); }
private async void Camera_Click(object sender, RoutedEventArgs e) { var capture = new CameraCaptureUI(); capture.PhotoSettings.AllowCropping = true; capture.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Jpeg; capture.PhotoSettings.MaxResolution = CameraCaptureUIMaxPhotoResolution.MediumXga; capture.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4; capture.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.StandardDefinition; var file = await capture.CaptureFileAsync(CameraCaptureUIMode.PhotoOrVideo); if (file != null) { if (file.ContentType.Equals("video/mp4")) { await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("WIN_yyyyMMdd_HH_mm_ss") + ".mp4", NameCollisionOption.GenerateUniqueName); ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StorageVideo.CreateAsync(file, true), false)); } else { await file.CopyAsync(KnownFolders.CameraRoll, DateTime.Now.ToString("WIN_yyyyMMdd_HH_mm_ss") + ".jpg", NameCollisionOption.GenerateUniqueName); ItemClick?.Invoke(this, new MediaSelectedEventArgs(await StoragePhoto.CreateAsync(file, true), false)); } } }
/* * 初始化页面控件 */ private void initControl(Int32 pageId) { DPage dPage = dPageBll.get(pageId); this.dPage = dPage; if (dPage == null) { return; } //1加载背景图片 StorageImage storageImage = null; if (dPage.backgroundImageId > 0) { storageImage = storageImageBll.get(dPage.backgroundImageId); } if (FileUtil.imageIsExists(storageImage?.url)) { Background = Brushes.Transparent; FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + storageImage.url, Convert.ToInt32(ActualWidth), Stretch.Fill); } else if (showDefaultBackgroundInCFrameDialog) { Background = Brushes.Transparent; FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + Params.CFrameDialogDefaultBackground, Convert.ToInt32(ActualWidth), Stretch.Fill); } //2加载视频背景 if (dPage.backgroundVideoId > 0) { StorageVideo storageVideo = storageVideoBll.get(dPage.backgroundVideoId); if (storageVideo != null) { int pageWidth = App.localStorage.cfg.screenWidth; int pageHeight = App.localStorage.cfg.screenHeight; if (dPage.width > 0) { pageWidth = dPage.width; pageHeight = dPage.height; } insertCVideoBackground(storageVideo, pageWidth, pageHeight); } } insertToPage = new InsertToPage(mainFrame, container, dPage, this); List <DControl> list = dControlBll.getByPageId(pageId); if (list == null) { return; } foreach (DControl ctl in list) { insertToPage.insertControl(ctl); } }
//显示选中的控件 private void showSelectedVideo(StorageVideo storageVideo) { if (storageVideo == null) { return; } selectedVideoWrapPanel.Children.Clear(); Canvas selectedVideoCanvas = initSelectedVideo(storageVideo); selectedVideoWrapPanel.Children.Add(selectedVideoCanvas); }
/* * 初始化页面控件 */ private void initControl(Int32 pageId) { container.Children.Clear(); dPage = dPageBll.get(pageId); if (dPage == null) { return; } //1加载背景图片 StorageImage storageImage = null; if (dPage.backgroundImageId > 0) { storageImage = storageImageBll.get(dPage.backgroundImageId); } if (FileUtil.imageIsExists(storageImage?.url)) { Background = Brushes.Transparent; FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + storageImage.url, App.localStorage.cfg.screenWidth, Stretch.Fill); } else if (showDefaultBackgroundInCFrameDialog) { Background = Brushes.Transparent; FileUtil.readImage2Page(this, AppDomain.CurrentDomain.BaseDirectory + Params.CFrameDialogDefaultBackground, App.localStorage.cfg.screenWidth, Stretch.Fill); } else { Background = Brushes.White; } //2加载视频背景 if (dPage.backgroundVideoId > 0) { StorageVideo storageVideo = storageVideoBll.get(dPage.backgroundVideoId); if (storageVideo != null) { int pageWidth = App.localStorage.cfg.screenWidth; int pageHeight = App.localStorage.cfg.screenHeight; if (dPage.width > 0) { pageWidth = dPage.width; pageHeight = dPage.height; } insertCVideoBackground(storageVideo, pageWidth, pageHeight); } } //编辑框,及页面空白处点击 editing = new Editing(mainFrame, this); }
private void init(DControl ctl) { StorageVideo storageVideo = storageVideoBll.get(ctl.storageId); string videoFullPath = FileUtil.notExistsShowDefault(storageVideo?.url, Params.VideoNotExists); width.Text = ctl.width.ToString(); height.Text = ctl.height.ToString(); left.Text = ctl.left.ToString(); top.Text = ctl.top.ToString(); opacity.Text = ctl.opacity.ToString(); idx.Content = ctl.idx.ToString(); }
private void url_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { StorageVideo storageVideo = null; object tag = backgroundVideoId.Tag; if (tag == null) { return; } storageVideo = (StorageVideo)tag; string fullFolder = FileUtil.getDirectory(AppDomain.CurrentDomain.BaseDirectory + storageVideo.url); FileUtil.openFile(fullFolder); }
public static StorageVideoDto convert(StorageVideo sv) { StorageVideoDto dto = new StorageVideoDto(); dto.id = sv.id; dto.origFilename = sv.origFilename; dto.url = sv.url; dto.size = sv.size; dto.ext = sv.ext; dto.createTime = sv.createTime; dto.duration = sv.duration; dto.storageImageId = sv.storageImageId; dto.folderId = sv.folderId; return(dto); }
private void init(DControl ctl) { if (!isLoading && !isLastPage) { isLoading = true; videoListWrap.Children.Clear(); initVideoList(); isLoading = false; } videoListScrollViewer.ScrollChanged += videoListScrollViewerChanged; //初始化选中按钮 if (ctl.linkToVideoId > 0) { StorageVideo storageVideo = storageVideoBll.get(ctl.linkToVideoId); showSelectedVideo(storageVideo); } }
/* * 保存视频 */ private void Submit_Button_Click(object sender, RoutedEventArgs e) { //更新页面控件信息 StorageVideo storageVideo = storageVideoBll.get(storageVideoId); StorageImage storageImage = storageImageBll.get(storageVideo.storageImageId); string imgFullPath = FileUtil.notExistsShowDefault(storageImage?.url, Params.ImageNotExists); imgFullPath = AppDomain.CurrentDomain.BaseDirectory + imgFullPath; currElement.Background = new ImageBrush { ImageSource = FileUtil.readImage2(imgFullPath, Convert.ToInt32(currElement.ActualWidth)), Stretch = Stretch.Fill }; currElement.Tag = storageVideo; Close(); }
private void init(DControl ctl) { StorageVideo storageVideo = storageVideoBll.get(ctl.storageId); string videoFullPath = FileUtil.notExistsShowDefault(storageVideo?.url, Params.VideoNotExists); string filename = FileUtil.getFilename(videoFullPath); string fullFolder = FileUtil.getDirectory(AppDomain.CurrentDomain.BaseDirectory + videoFullPath); url.Content = filename; url.Tag = fullFolder; width.Text = ctl.width.ToString(); height.Text = ctl.height.ToString(); left.Text = ctl.left.ToString(); top.Text = ctl.top.ToString(); autoplay.IsChecked = ctl.autoplay; loop.IsChecked = ctl.loop; opacity.Text = ctl.opacity.ToString(); idx.Content = ctl.idx.ToString(); isHideVideoConsoleOfFirstLoad.IsChecked = ctl.isHideVideoConsoleOfFirstLoad; url.PreviewMouseLeftButtonUp += url_PreviewMouseLeftButtonUp; }
//获取视频 public StorageVideo get(int id) { String sql = "select * from storageVideo where id=@id"; SQLiteParameter[] parameters = { new SQLiteParameter("@id", DbType.Int32, 4) }; parameters[0].Value = id; DataTable dt = Common.SQLiteHelper.ExecuteQuery(sql, parameters); if (dt == null || dt.Rows.Count == 0) { return(null); } StorageVideo dControl = DataToEntity <StorageVideo> .FillModel(dt.Rows[0]); return(dControl); }
public StorageVideo insert(string origFilePath, string url, int duration, string imgPath, Int32 imgWidth, Int32 imgHeight, Int32 folderId) { StorageImage storageImage = storageImageBll.insert(AppDomain.CurrentDomain.BaseDirectory + imgPath, imgPath, imgWidth, imgHeight, 1); //补充idx,createTime两个参数 FileInfo fileInfo = new FileInfo(origFilePath); String origFilename = FileUtil.getFilename(origFilePath); StorageVideo storageVideo = new StorageVideo(); storageVideo.origFilename = origFilename; storageVideo.url = url; storageVideo.ext = fileInfo.Extension; storageVideo.size = (int)fileInfo.Length; storageVideo.createTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); storageVideo.storageImageId = storageImage.id; storageVideo.duration = duration; storageVideo.folderId = folderId; //放在默认文件夹下 return(storageVideoDal.insert(storageVideo)); }
private void init(Int32 backgroundVideoIdVal) { StorageImage storageImage = null; StorageVideo storageVideo = null; if (backgroundVideoIdVal > 0) { storageVideo = storageVideoBll.get(backgroundVideoIdVal); if (storageVideo != null) { storageImage = storageImageBll.get(storageVideo.storageImageId); } } //Canvas canvas = initOneImage(storageVideo, storageImage); //imgList.Children.Add(canvas); //显示背景图片 backgroundVideoId.Tag = storageVideo; string imgPath = FileUtil.notExistsShowDefault(storageImage?.url, Params.Ico_Add_Image); backgroundVideoId.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + imgPath) , Stretch = Stretch.Uniform }; backgroundVideoId.Click += btn_Click; //删除 removeBtn.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + "/myfile/sysimg/ico-image-remove.png") , Stretch = Stretch.UniformToFill }; removeBtn.Click += removeBtnClick; url.PreviewMouseLeftButtonUp += url_PreviewMouseLeftButtonUp; }
/* * 保存数据 */ private void Submit_Button_Click(object sender, RoutedEventArgs e) { StorageVideo storageVideo = null; object tag = backgroundVideoId.Tag; if (tag != null) { storageVideo = (StorageVideo)tag; } //更新到数据库 DPage dPage = dPageBll.get(currDPage.id); dPage.backgroundVideoId = storageVideo == null ? 0 : storageVideo.id; dPageBll.update(dPage); currDPage = dPage; pageTemplate.dPage = dPage; //更新页面控件信息 //1.清空视频背景 foreach (FrameworkElement ele in pageTemplate.backgroundVideo.Children) { if (ele.Name == "CVideoBackground") { CVideoBackground cVideoBackground = (CVideoBackground)ele; cVideoBackground = null; } } pageTemplate.backgroundVideo.Children.Clear(); if (storageVideo != null) { insertCVideoBackground(storageVideo); } Close(); }
public Int32 delete(StorageVideo storageVideo) { //1.删除物理文件 if (string.IsNullOrWhiteSpace(storageVideo.url)) { return(0); } //string fullFilePath = AppDomain.CurrentDomain.BaseDirectory + storageVideo.url; //Boolean b = File.Exists(fullFilePath); //if (b) //{ // File.Delete(fullFilePath); //} //2.同时删除缩略图 StorageImage storageImage = storageImageBll.get(storageVideo.storageImageId); storageImageBll.delete(storageImage); //3.数据库记录删除 return(storageVideoDal.delete(storageVideo.id)); }
private void MediaPlayer_TimeChanged(object sender, VlcMediaPlayerTimeChangedEventArgs e) { vlcControl.SourceProvider.MediaPlayer.TimeChanged -= MediaPlayer_TimeChanged; string shotJpg = FileUtil.replaceExt(destFilePath, "jpg"); FileInfo shotFile = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + shotJpg); ThreadPool.QueueUserWorkItem(_ => { Console.WriteLine("视频截图----------"); vlcControl.SourceProvider.MediaPlayer.TakeSnapshot(shotFile, 0, 0); long length = vlcControl.SourceProvider.MediaPlayer.Length; int duration = Convert.ToInt32(length / 1000.0); int jpgWidth = 0; int jpgHeight = 0; try { System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + shotJpg); jpgWidth = sourceImage.Width; jpgHeight = sourceImage.Height; } catch (Exception) { } StorageVideo storageVideo = storageVideoBll.insert(this.sourceFilePath, destFilePath, duration, shotJpg, jpgWidth, jpgHeight, folderId); //插入一个视频到列表 App.Current.Dispatcher.Invoke((Action)(() => { Canvas newVideo = initOneVideo(storageVideo); videoListWrap.Children.Insert(0, newVideo); selectButton(newVideo); })); vlcControl?.Dispose(); }); }
private async void OnPaste(object sender, TextControlPasteEventArgs e) { // If the user tries to paste RTF content from any TOM control (Visual Studio, Word, Wordpad, browsers) // we have to handle the pasting operation manually to allow plaintext only. var package = Clipboard.GetContent(); if (package.AvailableFormats.Contains(StandardDataFormats.Bitmap)) { if (e != null) { e.Handled = true; } var bitmap = await package.GetBitmapAsync(); var media = new ObservableCollection <StorageMedia>(); var fileName = string.Format("image_{0:yyyy}-{0:MM}-{0:dd}_{0:HH}-{0:mm}-{0:ss}.png", DateTime.Now); var cache = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName); using (var stream = await bitmap.OpenReadAsync()) { var result = await ImageHelper.TranscodeAsync(stream, cache, BitmapEncoder.PngEncoderId); var photo = await StoragePhoto.CreateAsync(result, true); if (photo == null) { return; } media.Add(photo); } if (package.AvailableFormats.Contains(StandardDataFormats.Text)) { media[0].Caption = new FormattedText(await package.GetTextAsync(), new TextEntity[0]); } ViewModel.SendMediaExecute(media, media[0]); } else if (package.AvailableFormats.Contains(StandardDataFormats.WebLink)) { } else if (package.AvailableFormats.Contains(StandardDataFormats.StorageItems)) { if (e != null) { e.Handled = true; } var items = await package.GetStorageItemsAsync(); var media = new ObservableCollection <StorageMedia>(); var files = new List <StorageFile>(items.Count); foreach (var file in items.OfType <StorageFile>()) { if (file.ContentType.Equals("image/jpeg", StringComparison.OrdinalIgnoreCase) || file.ContentType.Equals("image/png", StringComparison.OrdinalIgnoreCase) || file.ContentType.Equals("image/bmp", StringComparison.OrdinalIgnoreCase) || file.ContentType.Equals("image/gif", StringComparison.OrdinalIgnoreCase)) { var photo = await StoragePhoto.CreateAsync(file, true); if (photo != null) { media.Add(photo); } } else if (file.ContentType == "video/mp4") { var video = await StorageVideo.CreateAsync(file, true); if (video != null) { media.Add(video); } } files.Add(file); } // Send compressed __only__ if user is dropping photos and videos only if (media.Count > 0 && media.Count == files.Count) { ViewModel.SendMediaExecute(media, media[0]); } else if (files.Count > 0) { ViewModel.SendFileExecute(files); } } else if (package.AvailableFormats.Contains(StandardDataFormats.Text) && package.AvailableFormats.Contains("application/x-tl-field-tags")) { if (e != null) { e.Handled = true; } // This is our field format var text = await package.GetTextAsync(); var data = await package.GetDataAsync("application/x-tl-field-tags") as IRandomAccessStream; var reader = new DataReader(data.GetInputStreamAt(0)); var length = await reader.LoadAsync((uint)data.Size); var count = reader.ReadInt32(); var entities = new List <TextEntity>(count); for (int i = 0; i < count; i++) { var entity = new TextEntity { Offset = reader.ReadInt32(), Length = reader.ReadInt32() }; var type = reader.ReadByte(); switch (type) { case 1: entity.Type = new TextEntityTypeBold(); break; case 2: entity.Type = new TextEntityTypeItalic(); break; case 3: entity.Type = new TextEntityTypePreCode(); break; case 4: entity.Type = new TextEntityTypeTextUrl { Url = reader.ReadString(reader.ReadUInt32()) }; break; case 5: entity.Type = new TextEntityTypeMentionName { UserId = reader.ReadInt32() }; break; } entities.Add(entity); } InsertText(text, entities); } else if (package.AvailableFormats.Contains(StandardDataFormats.Text) && package.AvailableFormats.Contains("application/x-td-field-tags")) { // This is Telegram Desktop mentions format } else if (package.AvailableFormats.Contains(StandardDataFormats.Text) /*&& package.Contains("Rich Text Format")*/) { if (e != null) { e.Handled = true; } var text = await package.GetTextAsync(); var start = Document.Selection.StartPosition; var result = Emoticon.Pattern.Replace(text, (match) => { var emoticon = match.Groups[1].Value; var emoji = Emoticon.Replace(emoticon); if (match.Value.StartsWith(" ")) { emoji = $" {emoji}"; } return(emoji); }); Document.Selection.SetText(TextSetOptions.None, result); Document.Selection.SetRange(start + result.Length, start + result.Length); } }
/* * 添加已选择的视频 */ private Canvas initSelectedVideo(StorageVideo video) { VideoListTag tag = new VideoListTag(); tag.isSelected = false; tag.storageVideo = video; Canvas selectedVideoCanvas = new Canvas(); selectedVideoCanvas.Name = "selectedVideoCanvas"; selectedVideoCanvas.Width = 100; selectedVideoCanvas.Height = 100; selectedVideoCanvas.Margin = new Thickness(10); selectedVideoCanvas.Tag = tag; //1.按钮 StorageImage storageImage = storageImageBll.get(video.storageImageId); string imgFullPath = FileUtil.notExistsShowDefault(storageImage?.url, Params.ImageNotExists); imgFullPath = AppDomain.CurrentDomain.BaseDirectory + imgFullPath; Image videoImage = new Image(); videoImage.Name = "videoImage1"; videoImage.Width = 100; videoImage.Height = 75; videoImage.Source = FileUtil.readImage2(imgFullPath, 200); videoImage.Stretch = Stretch.UniformToFill; //2.按钮行 Canvas bg = new Canvas(); bg.Name = "bg"; bg.Background = Brushes.Black; bg.Width = 100; bg.Height = 24; bg.Opacity = 0.6; bg.SetValue(Canvas.BottomProperty, 25.0); bg.SetValue(Canvas.LeftProperty, 0.0); //时长 string mmss = VideoUtil.duration2mmss(video.duration); Label lLabel = new Label(); lLabel.Width = 50; lLabel.Height = 24; lLabel.Content = mmss; lLabel.Foreground = Brushes.White; lLabel.SetValue(Canvas.LeftProperty, 0.0); lLabel.SetValue(Canvas.TopProperty, 0.0); bg.Children.Add(lLabel); //删除按钮 Button rbtn = new Button(); rbtn.Width = 16; rbtn.Height = 16; rbtn.BorderThickness = new Thickness(0); rbtn.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + App.localStorage.icoRemove) , Stretch = Stretch.UniformToFill }; rbtn.SetValue(Canvas.RightProperty, -8.0); rbtn.SetValue(Canvas.TopProperty, -8.0); rbtn.Click += rbtnRemoveSelectedVideoClick; //标题 string videoFullPath = FileUtil.notExistsShowDefault(video?.url, Params.VideoNotExists); string fullFolder = FileUtil.getDirectory(AppDomain.CurrentDomain.BaseDirectory + videoFullPath); Label titleLabel = new Label(); titleLabel.Width = 100; titleLabel.Height = 25; titleLabel.Content = video.origFilename; titleLabel.Tag = fullFolder; titleLabel.SetValue(Canvas.LeftProperty, 0.0); titleLabel.SetValue(Canvas.BottomProperty, 0.0); titleLabel.ToolTip = video.origFilename; titleLabel.PreviewMouseLeftButtonUp += titleLabel_PreviewMouseLeftButtonUp; selectedVideoCanvas.Children.Add(videoImage); selectedVideoCanvas.Children.Add(bg); selectedVideoCanvas.Children.Add(titleLabel); selectedVideoCanvas.Children.Add(rbtn); return(selectedVideoCanvas); }
/* * 1.4 链接到全屏视频 */ public void insertFullVideoToPage(DControlDto dControlDto) { StorageVideo storageVideo = storageVideoBll.get(dControlDto.linkToVideoId); int frameWidth = App.localStorage.cfg.screenWidth; int frameHeight = App.localStorage.cfg.screenHeight; if (dPage.width > 0) { frameWidth = dPage.width; } if (dPage.height > 0) { frameHeight = dPage.height; } Cfg cfg = new Cfg(); cfg.screenWidth = frameWidth; cfg.screenHeight = frameHeight; if (storageVideo == null) { storageVideo = new StorageVideo(); storageVideo.url = "/myfile/sysimg/notExists/video.mp4"; storageVideo.origFilename = "演示视频.mp4"; } StorageVideoDto dto = StorageVideoUtil.convert(storageVideo); StorageImage storageImage = storageImageBll.get(dto.storageImageId); dto.storageImageUrl = storageImage?.url; DControl ctl = new DControl(); ctl.id = 10003; ctl.pageId = 0; ctl.name = "cVideo"; ctl.width = cfg.screenWidth; ctl.height = cfg.screenHeight; ctl.left = 0; ctl.top = 0; ctl.type = "Video"; ctl.content = FileUtil.getFilenameTitle(storageVideo?.origFilename); ctl.idx = 0; ///// ctl.linkToPageId = 0; ctl.isClickShow = false; ctl.linkToVideoId = 0; ctl.autoplay = true; ctl.loop = false; ctl.turnPictureSpeed = 0; ctl.storageId = storageVideo.id; Canvas fullVideoCanvas = new Canvas(); fullVideoCanvas.Name = "fullVideoCanvas"; fullVideoCanvas.Width = ctl.width; fullVideoCanvas.Height = ctl.height; fullVideoCanvas.HorizontalAlignment = HorizontalAlignment.Left; fullVideoCanvas.VerticalAlignment = VerticalAlignment.Top; TransformGroup group = new TransformGroup(); double scaleX = dControlDto.width / Convert.ToDouble(ctl.width); double scaleY = dControlDto.height / Convert.ToDouble(ctl.height); ScaleTransform scaleTransform = new ScaleTransform(); scaleTransform.ScaleX = scaleX; scaleTransform.ScaleY = scaleY; group.Children.Add(scaleTransform); fullVideoCanvas.RenderTransform = group; double left = dControlDto.left; double top = dControlDto.top; fullVideoCanvas.Margin = new Thickness(left, top, 0, 0); Panel.SetZIndex(fullVideoCanvas, 10003); CVideo cVideo = new CVideo(ctl, true, cfg, dto, pageTemplate1.mqServer, true); cVideo.Name = "cVideo"; cVideo.HorizontalAlignment = HorizontalAlignment.Left; cVideo.VerticalAlignment = VerticalAlignment.Top; cVideo.Width = ctl.width; cVideo.Height = ctl.height; cVideo.Background = null; cVideo.Tag = ctl; //动画,平移到指定位置 double toTranslateTransformX = 0 - dControlDto.left; double toTranslateTransformY = 0 - dControlDto.top; fullVideoCanvas.Children.Add(cVideo); AnimationUtil.loadFullVideo(fullVideoCanvas, toTranslateTransformX, toTranslateTransformY); pageTemplate1.container.Children.Add(fullVideoCanvas); //是否显示关闭按钮 Button closebtn = cVideo.GetClosebtn(); closebtn.Visibility = Visibility.Visible; closebtn.Tag = true; closebtn.Click += (object sender, RoutedEventArgs e) => closeVideoAnimation(fullVideoCanvas, dControlDto, cVideo); }
/* * 初始化一个图片控件 */ private Canvas initOneVideo(StorageVideo storageVideo) { VideoListTag tag = new VideoListTag(); tag.isSelected = false; tag.storageVideo = storageVideo; Canvas videoCanvas = new Canvas(); videoCanvas.Name = "videoCanvas"; videoCanvas.Width = 100; videoCanvas.Height = 100; videoCanvas.Margin = new Thickness(10); videoCanvas.Tag = tag; //1.按钮 StorageImage storageImage = storageImageBll.get(storageVideo.storageImageId); string imgFullPath = FileUtil.notExistsShowDefault(storageImage?.url, Params.ImageNotExists); imgFullPath = AppDomain.CurrentDomain.BaseDirectory + imgFullPath; Image videoImage = new Image(); videoImage.Name = "videoImage1"; videoImage.Width = 100; videoImage.Height = 75; videoImage.Source = FileUtil.readImage2(imgFullPath, 200); videoImage.Stretch = Stretch.UniformToFill; //2.按钮行 Canvas bg = new Canvas(); bg.Name = "bg"; bg.Background = Brushes.Black; bg.Width = 100; bg.Height = 24; bg.Opacity = 0.6; bg.SetValue(Canvas.BottomProperty, 25.0); bg.SetValue(Canvas.LeftProperty, 0.0); //时长 string mmss = VideoUtil.duration2mmss(storageVideo.duration); Label lLabel = new Label(); lLabel.Width = 50; lLabel.Height = 24; lLabel.Content = mmss; lLabel.Foreground = Brushes.White; lLabel.SetValue(Canvas.LeftProperty, 0.0); lLabel.SetValue(Canvas.TopProperty, 0.0); bg.Children.Add(lLabel); //删除按钮 Button rbtn = new Button(); rbtn.Width = 16; rbtn.Height = 16; rbtn.BorderThickness = new Thickness(0); rbtn.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + "/myfile/sysimg/ico-image-remove.png") , Stretch = Stretch.UniformToFill }; rbtn.SetValue(Canvas.RightProperty, -8.0); rbtn.SetValue(Canvas.TopProperty, -8.0); // bg.Children.Add(rbtn); // rbtn.Click += rbtnClick; //标题 Label titleLabel = new Label(); titleLabel.Width = 100; titleLabel.Height = 25; titleLabel.Content = storageVideo.origFilename; titleLabel.SetValue(Canvas.LeftProperty, 0.0); titleLabel.SetValue(Canvas.BottomProperty, 0.0); titleLabel.ToolTip = storageVideo.origFilename; //勾选 Button selectButton = new Button(); selectButton.Name = "selectButton"; selectButton.Tag = storageVideo.id; selectButton.Width = 24; selectButton.Height = 24; selectButton.BorderThickness = new Thickness(0); selectButton.SetValue(Canvas.LeftProperty, 7.0); selectButton.SetValue(Canvas.TopProperty, 7.0); selectButton.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri(@"Resources/ico_media_select.png", UriKind.Relative)), Stretch = Stretch.UniformToFill }; selectButton.Visibility = Visibility.Hidden; videoCanvas.MouseEnter += videoCanvasMouseEnter; videoCanvas.MouseLeave += videoCanvasMouseLeave; videoCanvas.MouseLeftButtonDown += selectButtonClick; selectButton.Click += selectButtonClick; videoCanvas.Children.Add(videoImage); videoCanvas.Children.Add(bg); videoCanvas.Children.Add(titleLabel); videoCanvas.Children.Add(selectButton); // videoCanvas.Children.Add(rbtn); return(videoCanvas); }
/* * 更新视频 */ public StorageVideo update(StorageVideo one) { int rows = storageVideoDal.upate(one); return(one); }