/* * 进入新页面 * * 2.淡出完成,开始淡入 */ private void fadeOut_Completed(DControl ctl, CFrameTag cFrameTag) { PageTemplate pageTemplate = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, ctl.isTransparentDialog, pageTemplate1.screen, pageTemplate1.mqServer); cFrameTag.currCFrame.NavigationService.Navigate(pageTemplate); FrameUtil.RemoveBackEntry(cFrameTag.currCFrame); }
private void init() { Cfg cfg = cfgBll.get(1); App.localStorage.cfg = cfg; CFrameTag cFrameTag = new CFrameTag(); cFrameTag.currCFrame = mainFrame; cFrameTag.currCoverBorder = CoverBorder; cFrameTag.parentFrame = null; mainFrame.Tag = cFrameTag; initHeaderMenu(); showMusicButton(); openDefaultPage(); MouseDoubleClick += ExitMouseDoubleClick; if (cfg.noActionTimeBackToHome > 0) { backToHomeTimer.Tick += new EventHandler(BackToHomeTimer_Tick); //超过计时间隔时发生 backToHomeTimer.Start(); //DT启动 } }
private void a2_Completed(object sender, EventArgs e) { CFrameTag tag = (CFrameTag)mainFrame.Tag; if (tag.parentFrame != null) { mainFrame.Background = Brushes.Transparent; } }
/* * 获取显示位置 * * 当前窗口,则返回null * * 窗口不存在,返回null * * 其他,返回CFrameTag */ private CFrameTag getCFrameTag(int showInWhichCFrame) { // int showInWhichCFrame = ctl.showInWhichCFrame; //DControl cFrameDControl = dControlBll.get(ctl.showInWhichCFrame); //if (cFrameDControl.linkToPageId == ctl.pageId) { // //当前页面 //} //1.获取当前页面下的CFrame foreach (FrameworkElement ele in mainContainer.Children) { if (ele is CFrame) { CFrame cFrame = (CFrame)ele; DControl dc = (DControl)cFrame.Tag; if (showInWhichCFrame == dc.id) { Frame frame = cFrame.getFrame(); CFrameTag cFrameTag1 = (CFrameTag)frame.Tag; return(cFrameTag1); } } } //2.当前即顶层frame object tag = pageTemplate1.mainFrame.Tag; CFrameTag cFrameTag = (CFrameTag)tag; if (cFrameTag.parentFrame == null) { return(cFrameTag); } //3.判断是否当前frame if (showInWhichCFrame == cFrameTag.currDControl.id || showInWhichCFrame == 0) { //当前页面 return(cFrameTag); } //4.判断是否父框架 CFrameTag isInParent = isInParentCFrame(cFrameTag.parentFrame, showInWhichCFrame); return(isInParent); }
/* * 标准进入页面 */ public PageTemplate(Frame mainFrame, Int32 pageId, Boolean isMoveIn, System.Windows.Forms.Screen screen, MqServer mqServer) { InitializeComponent(); this.mainFrame = mainFrame; this.screen = screen; this.mqServer = mqServer; FrameUtil.RemoveBackEntry(mainFrame); CFrameTag cFrameTag = (CFrameTag)mainFrame.Tag; if (cFrameTag.parentFrame != null) { Background = Brushes.Transparent; showDefaultBackgroundInCFrameDialog = true; } initControl(pageId); Unloaded += PageTemplate_UnLoaded; if (isMoveIn) { Loaded += moveIn; } }
private void init() { Cfg cfg = cfgBll.get(1); App.localStorage.cfg = cfg; CFrameTag indexTag = new CFrameTag(); indexTag.currCFrame = mainFrame; indexTag.currCoverBorder = CoverBorder; indexTag.parentFrame = null; mainFrame.Tag = indexTag; initHeaderMenu(); showMusicButton(); //如果页面有视频或音频,则暂停背景音乐 openDefaultPage(); if (cfg.noActionTimeBackToHome > 0) { backToHomeTimer.Tick += new EventHandler(BackToHomeTimer_Tick); //超过计时间隔时发生 backToHomeTimer.Start(); //DT启动 } }
/* * 是否要显示在某个父窗口中、 */ private CFrameTag isInParentCFrame(Frame frame, int showInWhichCFrame) { // CFrameTag result = null; object tag = frame.Tag; CFrameTag cFrameTag = (CFrameTag)tag; //如果不显示在子窗口,则显示于主窗口 if (cFrameTag.parentFrame == null) { return(cFrameTag); } if (showInWhichCFrame == cFrameTag.currDControl.id) { //当前页面 return(cFrameTag); } else { return(isInParentCFrame(cFrameTag.parentFrame, showInWhichCFrame)); } // return result; }
public CFrame(Frame parentFrame, DControl currDControl, Cfg cfg, System.Windows.Forms.Screen screen, MqServer mqServer) { InitializeComponent(); this.currDControl = currDControl; this.cfg = cfg; this.screen = screen; this.mqServer = mqServer; object parentTag = parentFrame.Tag; DControl parentDControl = null; Border parentCoverBorder = null; if (parentTag is CFrameTag) { CFrameTag tmp = (CFrameTag)parentTag; parentDControl = tmp.currDControl; parentCoverBorder = tmp.currCoverBorder; } CFrameTag tag = new CFrameTag(); tag.currCFrame = mainFrame; tag.currDControl = currDControl; tag.currCoverBorder = CoverBorder; tag.parentFrame = parentFrame; tag.parentDControl = parentDControl; tag.parentCoverBorder = parentCoverBorder; mainFrame.Tag = tag; initControl(); Unloaded += UserControl_UnLoaded; //this.scrollViewer.PreviewTouchDown += scrollViewer_PreviewTouchDown; //this.scrollViewer.PreviewTouchUp += scrollViewer_PreivewTouchUp; }
/* * 4.1 返回按钮单击 */ public void backButtonClick(object sender, RoutedEventArgs e) { Button backButton = (Button)sender; DControl dControl = (DControl)backButton.Tag; DPage dPage = dPageBll.get(dControl.pageId); if (dPage.parentId <= 0) { return; } //设置返回哪一个页面 dControl.linkToPageId = dPage.parentId; int pageSwitchType = dPage.pageSwitchType; if (pageSwitchType <= 0) { pageSwitchType = 1; } //1.默认 if (pageSwitchType == 1) { PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer); pageTemplate1.NavigationService.Navigate(page); return; } //2.淡出 if (pageSwitchType == 2) { TransformGroup group = new TransformGroup(); pageTemplate1.RenderTransform = group; DoubleAnimation da = new DoubleAnimation(1.0, 0, new Duration(TimeSpan.FromMilliseconds(500))); da.BeginTime = TimeSpan.FromMilliseconds(0); IEasingFunction easingFunction = new SineEase() { EasingMode = EasingMode.EaseIn }; da.EasingFunction = easingFunction; da.Completed += (sender1, e1) => fadeOut_Completed(dControl, true, pageSwitchType); pageTemplate1.BeginAnimation(UIElement.OpacityProperty, da); return; } //3.右侧移入 -> 左侧移出 if (pageSwitchType == 3) { Border CoverBorder = null; CFrameTag tag = (CFrameTag)pageTemplate1.mainFrame.Tag; CoverBorder = tag.currCoverBorder; //截图 string shotImage = ShotUtil.shot(pageTemplate1); //显示上一页 BitmapImage bitmapImage = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage); CoverBorder.Background = new ImageBrush { ImageSource = bitmapImage , Stretch = Stretch.Fill }; CoverBorder.Visibility = Visibility.Visible; CoverBorder.UpdateLayout(); PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer); pageTemplate1.NavigationService.Navigate(page); //移出当前封面 int pageWidth = PageWidthUtil.getPageWidth(dPage.width, App.localStorage.cfg.screenWidth); CoverBorderUtil.TranslateXMoveOut(CoverBorder, pageWidth); return; } //4.右侧拉伸 -> 左侧收缩 if (pageSwitchType == 4) { pageTemplate1.mainFrame.Background = Brushes.White; Border CoverBorder = null; CFrameTag tag = (CFrameTag)pageTemplate1.mainFrame.Tag; CoverBorder = tag.currCoverBorder; //截图 string shotImage = ShotUtil.shot(pageTemplate1); CoverBorder.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage) , Stretch = Stretch.Fill }; CoverBorder.Visibility = Visibility.Visible; //显示上一页 PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer); pageTemplate1.NavigationService.Navigate(page); //移出当前封面 CoverBorderUtil.ScaleXMoveOut(CoverBorder); return; } //5.中心放大 -> 中心收缩 if (pageSwitchType == 5) { pageTemplate1.mainFrame.Background = Brushes.White; Border CoverBorder = null; CFrameTag tag = (CFrameTag)pageTemplate1.mainFrame.Tag; CoverBorder = tag.currCoverBorder; //截图 string shotImage = ShotUtil.shot(pageTemplate1); CoverBorder.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage) , Stretch = Stretch.Fill }; CoverBorder.Visibility = Visibility.Visible; //显示上一页 PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer); pageTemplate1.NavigationService.Navigate(page); //移出当前封面 CoverBorderUtil.CenterMoveOut(CoverBorder); return; } }
/* * 1.3 跳转到指定的页面,并伴随页面切换效果 */ private void linkToPageWithPageSwitchType(DControl ctl) { //1.如果显示位置不是 最顶层,则直接显示(无页面切换效果) CFrameTag cFrameTag = getCFrameTag(ctl.showInWhichCFrame); //2.如果是当前页面 DPage linkToDPage = dPageBll.get(ctl.linkToPageId); if (linkToDPage == null) { return; } if (linkToDPage.pageSwitchType <= 0) { linkToDPage.pageSwitchType = 1; } //滚动条回到开始 if (cFrameTag.parentFrame != null) { object parent = cFrameTag.currCFrame.Parent; if (parent is ScrollViewer) { ScrollViewer sv = (ScrollViewer)parent; sv.ScrollToVerticalOffset(0); sv.ScrollToHorizontalOffset(0); } } //1.直接进入 if (linkToDPage.pageSwitchType == 1) { // cFrameTag.currCFrame.Background = Brushes.White; PageTemplate page1 = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, false, pageTemplate1.screen, pageTemplate1.mqServer); cFrameTag.currCFrame.NavigationService.Navigate(page1); return; } //2.淡出淡入 if (linkToDPage.pageSwitchType == 2) { PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content; cFrameTag.currCFrame.Background = Brushes.White; pt.RenderTransformOrigin = new System.Windows.Point(0.5, 0.5); TransformGroup group = new TransformGroup(); pt.RenderTransform = group; DoubleAnimation da = new DoubleAnimation(1.0, 0, new Duration(TimeSpan.FromMilliseconds(400))); da.BeginTime = TimeSpan.FromMilliseconds(0); IEasingFunction easingFunction = new CubicEase() { EasingMode = EasingMode.EaseIn }; da.EasingFunction = easingFunction; da.Completed += (sender1, e1) => fadeOut_Completed(ctl, cFrameTag); pt.BeginAnimation(UIElement.OpacityProperty, da); return; } //3.右侧移入 if (linkToDPage.pageSwitchType == 3) { PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content; string shotImage = ShotUtil.shot(pt); cFrameTag.currCFrame.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage) }; PageTemplate page = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, pageTemplate1.screen, pageTemplate1.mqServer); cFrameTag.currCFrame.NavigationService.Navigate(page); FrameUtil.RemoveBackEntry(cFrameTag.currCFrame); return; } //4.右侧拉伸 if (linkToDPage.pageSwitchType == 4) { PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content; string shotImage = ShotUtil.shot(pt); cFrameTag.currCFrame.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage) }; PageTemplate page = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, pageTemplate1.screen, pageTemplate1.mqServer); cFrameTag.currCFrame.NavigationService.Navigate(page); FrameUtil.RemoveBackEntry(cFrameTag.currCFrame); return; } //5.中心放大 if (linkToDPage.pageSwitchType == 5) { PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content; string shotImage = ShotUtil.shot(pt); cFrameTag.currCFrame.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage) }; PageTemplate page = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, pageTemplate1.screen, pageTemplate1.mqServer); cFrameTag.currCFrame.NavigationService.Navigate(page); FrameUtil.RemoveBackEntry(cFrameTag.currCFrame); return; } }
/* * 1.2 弹窗显示页面 */ public void insertFrameDialog(DControl dControl) { //1.获取指定的显示位置,CFrame的宽高 CFrameTag cFrameTag = getCFrameTag(dControl.showInWhichCFrame); Grid mainContainerTmp = mainContainer; Frame mainFrameTmp = mainFrame; if (cFrameTag != null) { //获取框架中的页面大小,及container PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content; mainContainerTmp = pt.container; mainFrameTmp = cFrameTag.currCFrame; } this.realeaseOtherFrameDialog(mainContainerTmp); Int32 linkToPageId = dControl.linkToPageId; if (linkToPageId <= 0) { return; } DPage linkToDPage = dPageBll.get(linkToPageId); if (linkToDPage == null) { return; } //窗口所在父页面 //if (dControlDto.pageId <= 0) return; //DPage dPage = dPageBll.get(dControlDto.pageId); //if (dPage == null) return; //父页面宽高 int dPageWidth = Convert.ToInt32(mainContainerTmp.ActualWidth); int dPageHeight = Convert.ToInt32(mainContainerTmp.ActualHeight); //弹窗 int frameWidth = Convert.ToInt32(dPageWidth); int frameHeight = Convert.ToInt32(dPageHeight); if (linkToDPage.width > 0) { frameWidth = linkToDPage.width; } if (linkToDPage.height > 0) { frameHeight = linkToDPage.height; } Cfg cfg = new Cfg(); cfg.screenWidth = frameWidth; cfg.screenHeight = frameHeight; Canvas frameDialogCanvas = new Canvas(); frameDialogCanvas.Name = "frameDialogCanvas"; frameDialogCanvas.HorizontalAlignment = HorizontalAlignment.Left; frameDialogCanvas.VerticalAlignment = VerticalAlignment.Top; frameDialogCanvas.Width = dPageWidth; frameDialogCanvas.Height = dPageHeight; frameDialogCanvas.Background = Brushes.Transparent; Panel.SetZIndex(frameDialogCanvas, 10004); //1.透明底层 Border frameDialogBorder = new Border(); frameDialogBorder.Name = "frameDialogBorder"; frameDialogBorder.Width = dPageWidth; frameDialogBorder.Height = dPageHeight; frameDialogBorder.Background = Brushes.Black; frameDialogBorder.Opacity = 0.5; Panel.SetZIndex(frameDialogBorder, 1); frameDialogCanvas.Children.Add(frameDialogBorder); //2.弹窗 Canvas innerCanvas = new Canvas(); innerCanvas.Name = "innerCanvas"; innerCanvas.Width = cfg.screenWidth; innerCanvas.Height = cfg.screenHeight; innerCanvas.Background = Brushes.Transparent; innerCanvas.HorizontalAlignment = HorizontalAlignment.Left; innerCanvas.VerticalAlignment = VerticalAlignment.Top; double left = dControl.left; double top = dControl.top; innerCanvas.SetValue(Canvas.LeftProperty, left); innerCanvas.SetValue(Canvas.TopProperty, top); Panel.SetZIndex(innerCanvas, 2); CFrame cFrame = new CFrame(mainFrameTmp, dControl, cfg, pageTemplate1.screen, pageTemplate1.mqServer); cFrame.BorderThickness = new Thickness(0); cFrame.Margin = new Thickness(0, 0, 0, 0); cFrame.Width = cfg.screenWidth; cFrame.Height = cfg.screenHeight; cFrame.HorizontalAlignment = HorizontalAlignment.Left; cFrame.VerticalAlignment = VerticalAlignment.Top; cFrame.Opacity = 100.0; Panel.SetZIndex(cFrame, 1); cFrame.Focusable = false; innerCanvas.Children.Add(cFrame); //4.关闭按钮 double posR = -25.0; double posT = -25.0; if (dPageWidth == frameWidth && dPageHeight == frameHeight) { posR = 0; posT = 0; } Button closebtn = new Button(); closebtn.Background = new ImageBrush { ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + "/myfile/sysimg/ico-image-close.png") , Stretch = Stretch.Fill }; closebtn.Width = 50; closebtn.Height = 50; closebtn.BorderThickness = new Thickness(0); closebtn.HorizontalAlignment = HorizontalAlignment.Left; closebtn.VerticalAlignment = VerticalAlignment.Top; closebtn.SetValue(Canvas.RightProperty, posR); closebtn.SetValue(Canvas.TopProperty, posT); Panel.SetZIndex(closebtn, 2); innerCanvas.Children.Add(closebtn); TransformGroup group = new TransformGroup(); double scaleX = dControl.width / innerCanvas.Width; double scaleY = dControl.height / innerCanvas.Height; if (scaleX / scaleY > 2 || scaleY / scaleX > 2) { scaleX = 0.1; scaleY = 0.1; left = left + dControl.width * (1 - 0.1) / 2; //默认比例0.1 top = top + dControl.height * (1 - 0.1) / 2; innerCanvas.SetValue(Canvas.LeftProperty, left); innerCanvas.SetValue(Canvas.TopProperty, top); } ScaleTransform scaleTransform = new ScaleTransform(); scaleTransform.ScaleX = scaleX; scaleTransform.ScaleY = scaleY; group.Children.Add(scaleTransform); innerCanvas.RenderTransform = group; frameDialogCanvas.Children.Add(innerCanvas); closebtn.Click += (object sender1, RoutedEventArgs e1) => ShowFrameDialogUtil.closeAnimation(frameDialogCanvas, frameDialogBorder, innerCanvas, dControl, mainContainerTmp); frameDialogBorder.PreviewMouseLeftButtonDown += (object sender1, MouseButtonEventArgs e1) => ShowFrameDialogUtil.closeAnimation(frameDialogCanvas, frameDialogBorder, innerCanvas, dControl, mainContainerTmp); frameDialogBorder.PreviewTouchDown += (object sender1, TouchEventArgs e1) => ShowFrameDialogUtil.closeAnimation(frameDialogCanvas, frameDialogBorder, innerCanvas, dControl, mainContainerTmp); //动画,平移到指定位置 double toLeft = (dPageWidth - innerCanvas.Width) / 2; double toTop = (dPageHeight - innerCanvas.Height) / 2; double toTranslateTransformX = toLeft - left; double toTranslateTransformY = toTop - top; ShowFrameDialogUtil.showAnimation(frameDialogBorder, innerCanvas, dControl, toTranslateTransformX, toTranslateTransformY); mainContainerTmp.Children.Add(frameDialogCanvas); }