/* * 查看大图 * * 加载动画 */ public static void showAnimation(Border borderBg, Canvas currElement, DControlDto ctl, double toTranslateTransformX, double toTranslateTransformY) { //淡入 borderBg.RenderTransformOrigin = new Point(0.5, 0.5); DoubleAnimation da = new DoubleAnimation(0, borderBg.Opacity, new Duration(TimeSpan.FromMilliseconds(300))); borderBg.BeginAnimation(UIElement.OpacityProperty, da); //放大 TransformGroup group = (TransformGroup)currElement.RenderTransform; ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da1 = new DoubleAnimation(scaleTransform.ScaleX, 1.0, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da1); DoubleAnimation da2 = new DoubleAnimation(scaleTransform.ScaleY, 1.0, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, da2); // 平移 TranslateTransform translateTransform = TransformGroupUtil.GetTranslateTransform(group); DoubleAnimation da3 = new DoubleAnimation(0, toTranslateTransformX, new Duration(TimeSpan.FromMilliseconds(300))); translateTransform.BeginAnimation(TranslateTransform.XProperty, da3); DoubleAnimation da4 = new DoubleAnimation(0, toTranslateTransformY, new Duration(TimeSpan.FromMilliseconds(300))); translateTransform.BeginAnimation(TranslateTransform.YProperty, da4); }
/* * 关闭视频 * * 动画,回到原位,移除大图 */ private void closeVideoAnimation(Canvas fullVideoCanvas, DControlDto dControlDto, CVideo cVideo) { //1.淡出 DoubleAnimation da = new DoubleAnimation(fullVideoCanvas.Opacity, 0, new Duration(TimeSpan.FromMilliseconds(100))); da.BeginTime = TimeSpan.FromMilliseconds(200); fullVideoCanvas.BeginAnimation(UIElement.OpacityProperty, da); //触摸缩放后 double backToScaleX = dControlDto.width / fullVideoCanvas.Width; double backToScaleY = dControlDto.height / fullVideoCanvas.Height; Transform transform = fullVideoCanvas.RenderTransform; TransformGroup group = (TransformGroup)fullVideoCanvas.RenderTransform; //2.缩放 ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da1 = new DoubleAnimation(scaleTransform.ScaleX, backToScaleX, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da1); DoubleAnimation da2 = new DoubleAnimation(scaleTransform.ScaleY, backToScaleY, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, da2); // 3.平移 TranslateTransform translateTransform = TransformGroupUtil.GetTranslateTransform(group); DoubleAnimation da3 = new DoubleAnimation(translateTransform.X, 0, new Duration(TimeSpan.FromMilliseconds(300))); translateTransform.BeginAnimation(TranslateTransform.XProperty, da3); DoubleAnimation da4 = new DoubleAnimation(translateTransform.Y, 0, new Duration(TimeSpan.FromMilliseconds(300))); da4.Completed += (sender, e) => closeVideoAnimation_Completed(fullVideoCanvas, cVideo, dControlDto); translateTransform.BeginAnimation(TranslateTransform.YProperty, da4); }
/* * 关闭大图 * * 动画,回到原位,移除大图 */ public static void closeAnimation(Canvas bigImageCanvas, Border borderBg, Canvas innerCanvas, DControlDto ctl, Grid mainContainer) { //1.淡出 borderBg.RenderTransformOrigin = new Point(0.5, 0.5); DoubleAnimation da = new DoubleAnimation(borderBg.Opacity, 0, new Duration(TimeSpan.FromMilliseconds(300))); borderBg.BeginAnimation(UIElement.OpacityProperty, da); //触摸缩放后 double backToScaleX = ctl.width / innerCanvas.Width; double backToScaleY = ctl.height / innerCanvas.Height; Transform transform = innerCanvas.RenderTransform; TransformGroup group = null; if (transform is TransformGroup) { group = (TransformGroup)innerCanvas.RenderTransform; } else { group = new TransformGroup(); TranslateTransform translateTransform1 = new TranslateTransform(); MatrixTransform matrixTransform = (MatrixTransform)innerCanvas.RenderTransform; translateTransform1.X = matrixTransform.Matrix.OffsetX; translateTransform1.Y = matrixTransform.Matrix.OffsetY; group.Children.Add(translateTransform1); ScaleTransform scaleTransform1 = new ScaleTransform(); scaleTransform1.ScaleX = matrixTransform.Matrix.M11; scaleTransform1.ScaleY = matrixTransform.Matrix.M22; group.Children.Add(scaleTransform1); innerCanvas.RenderTransform = group; } //2.缩放 ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da1 = new DoubleAnimation(scaleTransform.ScaleX, backToScaleX, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da1); DoubleAnimation da2 = new DoubleAnimation(scaleTransform.ScaleY, backToScaleY, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, da2); // 3.平移 TranslateTransform translateTransform = TransformGroupUtil.GetTranslateTransform(group); DoubleAnimation da3 = new DoubleAnimation(translateTransform.X, 0, new Duration(TimeSpan.FromMilliseconds(300))); translateTransform.BeginAnimation(TranslateTransform.XProperty, da3); DoubleAnimation da4 = new DoubleAnimation(translateTransform.Y, 0, new Duration(TimeSpan.FromMilliseconds(300))); da4.Completed += (sender, e) => closeBigImageAnimation_Completed(bigImageCanvas, mainContainer); translateTransform.BeginAnimation(TranslateTransform.YProperty, da4); }
public void updateElementAttr(DControl dControl, bool isDesign) { Width = dControl.width; Height = dControl.height; Margin = new Thickness(dControl.left, dControl.top, 0, 0); Opacity = dControl.opacity / 100.0; //this.currDControl = dControl; TransformGroup group = (TransformGroup)RenderTransform; RotateTransform rotateTransform = TransformGroupUtil.GetRotateTransform(group); rotateTransform.Angle = dControl.rotateAngle; }
/* * 4右侧拉伸 */ public static void ScaleXMoveOut(Border CoverBorder) { CoverBorder.RenderTransformOrigin = new System.Windows.Point(1.0, 0.5); TransformGroup group = new TransformGroup(); CoverBorder.RenderTransform = group; ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da = new DoubleAnimation(1.0, 0, new Duration(TimeSpan.FromMilliseconds(500))); da.BeginTime = TimeSpan.FromMilliseconds(0); //da.EasingFunction = easingFunction; da.Completed += (sender1, e1) => CoverBorderMoveOut_Completed(CoverBorder); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da); }
/* * 关闭大图 * * 动画,回到原位,移除大图 */ public static void closeAnimation(Canvas frameDialogCanvas, Border borderBg, Canvas innerCanvas, DControl dControlDto, Grid mainContainer) { double scaleX = dControlDto.width / innerCanvas.Width; double scaleY = dControlDto.height / innerCanvas.Height; if (scaleX / scaleY > 2 || scaleY / scaleX > 2) { scaleX = 0.1; scaleY = 0.1; } //1.淡出 borderBg.RenderTransformOrigin = new Point(0.5, 0.5); DoubleAnimation da = new DoubleAnimation(borderBg.Opacity, 0, new Duration(TimeSpan.FromMilliseconds(300))); borderBg.BeginAnimation(UIElement.OpacityProperty, da); //2.缩放 TransformGroup group = (TransformGroup)innerCanvas.RenderTransform; // innerCanvas.RenderTransformOrigin = new Point(0.5, 0.5); ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da2 = new DoubleAnimation(scaleTransform.ScaleY, scaleY, new Duration(TimeSpan.FromMilliseconds(300))); da2.Completed += (sender, e) => closeAnimation_Completed(frameDialogCanvas, innerCanvas, mainContainer); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, da2); DoubleAnimation da22 = new DoubleAnimation(scaleTransform.ScaleX, scaleX, new Duration(TimeSpan.FromMilliseconds(300))); scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da22); // 平移 TranslateTransform translateTransform = TransformGroupUtil.GetTranslateTransform(group); DoubleAnimation da31 = new DoubleAnimation(translateTransform.X, 0, new Duration(TimeSpan.FromMilliseconds(300))); translateTransform.BeginAnimation(TranslateTransform.XProperty, da31); DoubleAnimation da32 = new DoubleAnimation(translateTransform.Y, 0, new Duration(TimeSpan.FromMilliseconds(300))); translateTransform.BeginAnimation(TranslateTransform.YProperty, da32); // 淡出模式 DoubleAnimation da4 = new DoubleAnimation(innerCanvas.Opacity, 0, new Duration(TimeSpan.FromMilliseconds(300))); da4.Completed += (sender, e) => closeAnimation_Completed(frameDialogCanvas, innerCanvas, mainContainer); innerCanvas.BeginAnimation(UIElement.OpacityProperty, da4); }
/* * 3左侧移入 - 右侧移出 */ public static void TranslateXMoveOut(Border CoverBorder, int pageWidth) { CoverBorder.RenderTransformOrigin = new System.Windows.Point(0.5, 0.5); TransformGroup group = new TransformGroup(); CoverBorder.RenderTransform = group; TranslateTransform translateTransform = TransformGroupUtil.GetTranslateTransform(group); DoubleAnimation da = new DoubleAnimation(0, pageWidth, new Duration(TimeSpan.FromMilliseconds(400))); da.BeginTime = TimeSpan.FromMilliseconds(0); IEasingFunction easingFunction = new SineEase() { EasingMode = EasingMode.EaseIn }; // da.EasingFunction = easingFunction; //da.AccelerationRatio = 0.2; da.Completed += (sender1, e1) => CoverBorderMoveOut_Completed(CoverBorder); translateTransform.BeginAnimation(TranslateTransform.XProperty, da); }
// private void Submit_Button_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrWhiteSpace(width.Text)) { MessageBox.Show("请填写宽度;"); return; } else if (!DataUtil.isInt(width.Text.ToString())) { MessageBox.Show("宽度必须是整数;"); return; } if (string.IsNullOrWhiteSpace(height.Text.ToString())) { MessageBox.Show("请填写高度;"); return; } else if (!DataUtil.isInt(height.Text.ToString())) { MessageBox.Show("高度必须是整数;"); return; } if (string.IsNullOrWhiteSpace(left.Text.ToString())) { MessageBox.Show("请填写左边距;"); return; } else if (!DataUtil.isInt(left.Text.ToString())) { MessageBox.Show("左边距请填写整数;"); return; } if (string.IsNullOrWhiteSpace(top.Text.ToString())) { MessageBox.Show("请填写上边距;"); return; } else if (!DataUtil.isInt(top.Text.ToString())) { MessageBox.Show("上边距请填写整数;"); return; } if (string.IsNullOrWhiteSpace(opacity.Text.ToString())) { MessageBox.Show("请填写透明度;"); return; } else if (!DataUtil.isInt(opacity.Text.ToString())) { MessageBox.Show("透明度请填写整数;"); return; } else { Int32 opacityVal = Convert.ToInt32(opacity.Text.ToString()); if (opacityVal < 0 || opacityVal > 100) { MessageBox.Show("透明度为0-100内的整数;"); return; } } if (string.IsNullOrWhiteSpace(rotateAngle.Text)) { MessageBox.Show("请填写旋转角度;"); return; } else if (!DataUtil.isInt(rotateAngle.Text.ToString())) { MessageBox.Show("旋转角度必须是整数;"); return; } else { Int32 rotateAngleVal = Convert.ToInt32(rotateAngle.Text.ToString()); if (rotateAngleVal < 0 || rotateAngleVal > 360) { MessageBox.Show("旋转角度为0-360内的整数;"); return; } } //更新到数据库 DControl dControl = dControlBll.get(currDControl.id); dControl.width = int.Parse(width.Text); dControl.height = int.Parse(height.Text); dControl.left = int.Parse(left.Text); dControl.top = int.Parse(top.Text); dControl.isClickShow = (Boolean)isClickShow.IsChecked; dControl.opacity = int.Parse(opacity.Text); dControl.isTab = (Boolean)isTab.IsChecked; dControl.rotateAngle = int.Parse(rotateAngle.Text); dControlBll.update(dControl); //更新页面控件信息,更新isClickShow currDControl = dControl; currElement.Tag = currDControl; Button button = (Button)currElement; button.Width = currDControl.width; button.Height = currDControl.height; button.Margin = new Thickness(currDControl.left, currDControl.top, 0, 0); button.Opacity = currDControl.opacity / 100.0; TransformGroup group = (TransformGroup)button.RenderTransform; RotateTransform rotateTransform = TransformGroupUtil.GetRotateTransform(group); rotateTransform.Angle = currDControl.rotateAngle; //2.修改8个点的位置 及宽高 editing.updateEditingBorder(currDControl); Close(); }
private void moveIn(object sender, EventArgs e) { Int32 pageSwitchType = dPage.pageSwitchType; if (isBack && backPageSwitchType > 0) { pageSwitchType = backPageSwitchType; } if (pageSwitchType <= 0) { pageSwitchType = 1; } int pageWidth = dPage.width; if (pageWidth <= 0) { pageWidth = App.localStorage.cfg.screenWidth; } //1.默认 if (pageSwitchType == 1) { mainFrame.Background = Brushes.Transparent; return; } //2.淡入 else if (pageSwitchType == 2) { TransformGroup group = new TransformGroup(); RenderTransform = group; DoubleAnimation da = new DoubleAnimation(0, 1.0, new Duration(TimeSpan.FromMilliseconds(400))); da.BeginTime = TimeSpan.FromMilliseconds(0); IEasingFunction easingFunction = new SineEase() { EasingMode = EasingMode.EaseOut }; da.EasingFunction = easingFunction; da.Completed += a2_Completed; BeginAnimation(UIElement.OpacityProperty, da); return; } //3.右侧移入 else if (pageSwitchType == 3) { if (isBack) { return; } TransformGroup group = new TransformGroup(); RenderTransform = group; double middlePos = pageWidth / 2; TranslateTransform translateTransform = TransformGroupUtil.GetTranslateTransform(group); DoubleAnimation da = new DoubleAnimation(middlePos, 0, new Duration(TimeSpan.FromMilliseconds(500))); da.BeginTime = TimeSpan.FromMilliseconds(0); IEasingFunction easingFunction = new SineEase() { EasingMode = EasingMode.EaseOut }; da.AccelerationRatio = 0.9; // da.EasingFunction = easingFunction; da.Completed += a2_Completed; translateTransform.BeginAnimation(TranslateTransform.XProperty, da); Opacity = 0; DoubleAnimation da1 = new DoubleAnimation(0, 1.0, new Duration(TimeSpan.FromMilliseconds(100))); da1.BeginTime = TimeSpan.FromMilliseconds(0); da1.EasingFunction = easingFunction; BeginAnimation(UIElement.OpacityProperty, da1); return; } //4.右侧拉伸 else if (pageSwitchType == 4) { if (isBack) { return; } RenderTransformOrigin = new System.Windows.Point(1, 0); TransformGroup group = new TransformGroup(); RenderTransform = group; ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da = new DoubleAnimation(0, 1.0, new Duration(TimeSpan.FromMilliseconds(500))); da.BeginTime = TimeSpan.FromMilliseconds(0); //da.EasingFunction = easingFunction; da.Completed += a2_Completed; scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da); return; } //5.中心放大 else if (pageSwitchType == 5) { if (isBack) { return; } RenderTransformOrigin = new System.Windows.Point(0.5, 0.5); TransformGroup group = new TransformGroup(); RenderTransform = group; ScaleTransform scaleTransform = TransformGroupUtil.GetScaleTransform(group); DoubleAnimation da = new DoubleAnimation(0.2, 1.0, new Duration(TimeSpan.FromMilliseconds(500))); da.BeginTime = TimeSpan.FromMilliseconds(0); IEasingFunction easingFunction = new SineEase() { EasingMode = EasingMode.EaseOut }; da.EasingFunction = easingFunction; da.Completed += a2_Completed; scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, da); scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, da); Opacity = 0; DoubleAnimation da1 = new DoubleAnimation(0, 1.0, new Duration(TimeSpan.FromMilliseconds(100))); da1.BeginTime = TimeSpan.FromMilliseconds(0); da1.EasingFunction = easingFunction; BeginAnimation(UIElement.OpacityProperty, da1); return; } }
/* * 让当前控件获得焦点 */ private Border control_GetFocus(object sender, MouseButtonEventArgs e) { pageTemplate.container.Children.Remove(editingBorder); FrameworkElement control = (FrameworkElement)sender; DControl dControl = (DControl)control.Tag; SolidColorBrush borderColor = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FF109CEC")); //point宽度的一般 double bhalf = Math.Floor(pointWidth / 2); //point水平居中坐标 double centerX = (control.Width - pointWidth) / 2; //point垂直居中坐标 double centerY = (control.Height - pointWidth) / 2; //1左上角 Border border1 = new Border(); border1.Name = "leftTopBorder"; border1.Width = pointWidth; border1.Height = pointWidth; // border1.Margin = new Thickness(-bhalf,-bhalf,0,0); border1.BorderThickness = new Thickness(1); border1.BorderBrush = borderColor; border1.Background = Brushes.White; border1.SetValue(Canvas.LeftProperty, -bhalf); border1.SetValue(Canvas.TopProperty, -bhalf); //2右上角 Border border2 = new Border(); border2.Name = "rightTopBorder"; border2.Width = pointWidth; border2.Height = pointWidth; // border2.Margin = new Thickness(0, -bhalf, -bhalf, 0); border2.BorderThickness = new Thickness(1); border2.BorderBrush = borderColor; border2.Background = Brushes.White; border2.SetValue(Canvas.TopProperty, -bhalf); border2.SetValue(Canvas.RightProperty, -bhalf); //3右下角 Border border3 = new Border(); border3.Name = "rightBottomBorder"; border3.Width = pointWidth; border3.Height = pointWidth; // border3.Margin = new Thickness(0, 0, -bhalf, -bhalf); border3.BorderThickness = new Thickness(1); border3.BorderBrush = borderColor; border3.Background = Brushes.White; border3.SetValue(Canvas.RightProperty, -bhalf); border3.SetValue(Canvas.BottomProperty, -bhalf); border3.MouseEnter += border3_MouseEnter; border3.MouseLeave += border3_MouseLeave; border3.PreviewMouseDown += border3_MouseDown; border3.PreviewMouseMove += border3_MouseMove; border3.PreviewMouseUp += border3_MouseUp; //4左下角 Border border4 = new Border(); border4.Name = "leftBottomBorder"; border4.Width = pointWidth; border4.Height = pointWidth; // border4.Margin = new Thickness(-bhalf, 0, 0, -bhalf); border4.BorderThickness = new Thickness(1); border4.BorderBrush = borderColor; border4.Background = Brushes.White; border4.SetValue(Canvas.LeftProperty, -bhalf); border4.SetValue(Canvas.BottomProperty, -bhalf); //5左中角 Border border5 = new Border(); border5.Name = "leftCenterBorder"; border5.Width = pointWidth; border5.Height = pointWidth; // border5.Margin = new Thickness(-bhalf, centerY, 0, 0); border5.BorderThickness = new Thickness(1); border5.BorderBrush = borderColor; border5.Background = Brushes.White; border5.SetValue(Canvas.LeftProperty, -bhalf); border5.SetValue(Canvas.TopProperty, centerY); //6上中角 Border border6 = new Border(); border6.Name = "topCenterBorder"; border6.Width = pointWidth; border6.Height = pointWidth; // border6.Margin = new Thickness(centerX, -bhalf, 0, 0); border6.BorderThickness = new Thickness(1); border6.BorderBrush = borderColor; border6.Background = Brushes.White; border6.SetValue(Canvas.LeftProperty, centerX); border6.SetValue(Canvas.TopProperty, -bhalf); //7右中角 Border border7 = new Border(); border7.Name = "rightCenterBorder"; border7.Width = pointWidth; border7.Height = pointWidth; // border7.Margin = new Thickness(0, centerY, -bhalf, 0); border7.BorderThickness = new Thickness(1); border7.BorderBrush = borderColor; border7.Background = Brushes.White; border7.SetValue(Canvas.RightProperty, -bhalf); border7.SetValue(Canvas.TopProperty, centerY); //8下中角 Border border8 = new Border(); border8.Name = "bottomCenterBorder"; border8.Width = pointWidth; border8.Height = pointWidth; // border8.Margin = new Thickness(centerX, 0, 0, -bhalf); border8.BorderThickness = new Thickness(1); border8.BorderBrush = borderColor; border8.Background = Brushes.White; border8.SetValue(Canvas.LeftProperty, centerX); border8.SetValue(Canvas.BottomProperty, -bhalf); Canvas editingCanvas = new Canvas(); editingCanvas.Name = "editingCanvas"; editingCanvas.Width = control.Width; editingCanvas.Height = control.Height; editingCanvas.VerticalAlignment = VerticalAlignment.Top; editingCanvas.HorizontalAlignment = HorizontalAlignment.Left; editingCanvas.Margin = new Thickness(-1, -1, 0, 0); editingCanvas.Children.Add(border1); editingCanvas.Children.Add(border2); editingCanvas.Children.Add(border3); editingCanvas.Children.Add(border4); editingCanvas.Children.Add(border5); editingCanvas.Children.Add(border6); editingCanvas.Children.Add(border7); editingCanvas.Children.Add(border8); editingBorder = new Border(); editingBorder.Name = "editingBorder"; editingBorder.Width = control.Width; editingBorder.Height = control.Height; editingBorder.Margin = control.Margin; editingBorder.BorderThickness = new Thickness(1); editingBorder.BorderBrush = borderColor; editingBorder.Background = Brushes.Transparent; editingBorder.VerticalAlignment = VerticalAlignment.Top; editingBorder.HorizontalAlignment = HorizontalAlignment.Left; Grid.SetZIndex(editingBorder, 10001); editingBorder.Child = editingCanvas; editingBorder.Tag = control; // control.Tag = editingBorder; TransformGroup group = new TransformGroup(); RotateTransform rotateTransform = TransformGroupUtil.GetRotateTransform(group); rotateTransform.Angle = dControl.rotateAngle; editingBorder.RenderTransform = group; editingBorder.RenderTransformOrigin = new Point(0.5, 0.5); editingBorder.MouseLeftButtonDown += editingBorder_MouseDown; editingBorder.MouseMove += editingBorder_MouseMove; editingBorder.MouseLeftButtonUp += editingBorder_MouseUp; //editingBorder.PreviewTouchDown += editingBorder_PreviewTouchDown; //editingBorder.TouchMove += editingBorder_TouchMove; //editingBorder.PreviewTouchUp += editingBorder_PreviewTouchUp; //右击控件 editingBorder.MouseRightButtonUp += control_MouseRightButtonUp; pageTemplate.container.Children.Add(editingBorder); return(editingBorder); }