コード例 #1
0
        void Target_MouseMove(object sender, MouseEventArgs e)
        {
            if (IsDown)
            {
                DeltaDelta    = e.GetPosition(null) - CurrentPoint;
                CurrentPoint += DeltaDelta;

                if (!IsActive)
                {
                    if (Math.Abs(Delta.X) >= SystemParameters.MinimumHorizontalDragDistance ||
                        Math.Abs(Delta.Y) >= SystemParameters.MinimumVerticalDragDistance)
                    {
                        IsActive        = true;
                        CurrentListener = this;

                        if (Started != null)
                        {
                            Started(this);
                        }
                    }
                }

                if (IsActive && Changed != null)
                {
                    Changed(this);
                }
            }
        }
コード例 #2
0
		private void dragX_Changed(DragListener drag)
		{
			Point currentPoint = Mouse.GetPosition(this.parent);
			Vector deltaVector = Point.Subtract(currentPoint, this.startPoint);
			
			var destAngle = (-0.5*deltaVector.X) + skewX;
			
			if (destAngle == 0 && skewY == 0)
			{
				this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).Reset();
				rtTransform = null;
				skewTransform = null;
			}
			else
			{
				if ((rtTransform == null) || !(rtTransform.Component is SkewTransform))
				{
					if (!this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).IsSet) {
						this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(0.5,0.5));
					}
					
					if (this.skewTransform == null)
						this.skewTransform = new SkewTransform(0, 0);
					this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).SetValue(skewTransform);
					rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value;
				}
				rtTransform.Properties["AngleX"].SetValue(destAngle);
			}
			
			_adornerLayer.UpdateAdornersForElement(this.ExtendedItem.View, true);
		}
コード例 #3
0
		private void drag_Rotate_Started(DragListener drag)
		{
			var designerItem = this.ExtendedItem.Component as FrameworkElement;
			this.parent = VisualTreeHelper.GetParent(designerItem) as UIElement;
			this.centerPoint = designerItem.TranslatePoint(
				new Point(designerItem.ActualWidth*designerItem.RenderTransformOrigin.X,
				          designerItem.ActualHeight*designerItem.RenderTransformOrigin.Y),
				this.parent);

			Point startPoint = Mouse.GetPosition(this.parent);
			this.startVector = Point.Subtract(startPoint, this.centerPoint);

			if (this.rotateTransform == null)
			{
				this.initialAngle = 0;
			}
			else
			{
				this.initialAngle = this.rotateTransform.Angle;
			}

			rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value;

			operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize);
		}
コード例 #4
0
ファイル: NumericUpDown.cs プロジェクト: wskjava/SharpDevelop
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            upButton   = (DragRepeatButton)Template.FindName("PART_UpButton", this);
            downButton = (DragRepeatButton)Template.FindName("PART_DownButton", this);
            textBox    = (TextBox)Template.FindName("PART_TextBox", this);

            upButton.Click   += upButton_Click;
            downButton.Click += downButton_Click;

            textBox.LostFocus += (sender, e) => OnLostFocus(e);

            var upDrag   = new DragListener(upButton);
            var downDrag = new DragListener(downButton);

            upDrag.Started   += drag_Started;
            upDrag.Changed   += drag_Changed;
            upDrag.Completed += drag_Completed;

            downDrag.Started   += drag_Started;
            downDrag.Changed   += drag_Changed;
            downDrag.Completed += drag_Completed;

            Print();
        }
コード例 #5
0
        protected void drag_Changed(DragListener drag)
        {
            var mprt = drag.Target as PathThumb;

            if (mprt != null)
            {
                _isDragging = true;
                MovePoints(drag.Delta.X, drag.Delta.Y);
            }
        }
コード例 #6
0
        void Complete()
        {
            IsActive        = false;
            CurrentListener = null;

            if (Completed != null)
            {
                Completed(this);
            }
        }
コード例 #7
0
        // TODO : Remove all hide/show extensions from here.
        protected void drag_Started(DragListener drag)
        {
            //get current thumb
            var mprt = (drag.Target as PathThumb);

            if (mprt != null)
            {
                SetOperation();
            }
        }
コード例 #8
0
		protected UserControlPointsObjectThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, DependencyProperty property)
		{
			var designerThumb = new UserControlPointsObjectThumb { Alignment = alignment, Cursor = cursor, IsPrimarySelection = true, DependencyProperty = property };
			AdornerPanel.SetPlacement(designerThumb, Place(designerThumb, alignment));

			adornerPanel.Children.Add(designerThumb);

			DragListener = new DragListener(designerThumb);
			DragListener.Started += drag_Started;
			DragListener.Changed += drag_Changed;
			DragListener.Completed += drag_Completed;

			return designerThumb;
		}
コード例 #9
0
		ResizeThumb CreateThumb(PlacementAlignment alignment, Cursor cursor)
		{
			ResizeThumb resizeThumb = new ResizeThumbImpl( cursor == Cursors.SizeNS, cursor == Cursors.SizeWE );
			resizeThumb.Cursor = cursor;
			resizeThumb.Alignment = alignment;
			AdornerPanel.SetPlacement(resizeThumb, Place(ref resizeThumb, alignment));
			adornerPanel.Children.Add(resizeThumb);
			
			DragListener drag = new DragListener(resizeThumb);
			drag.Started += new DragHandler(drag_Started);
			drag.Changed += new DragHandler(drag_Changed);
			drag.Completed += new DragHandler(drag_Completed);
			return resizeThumb;
		}
コード例 #10
0
		protected DesignerThumb CreateThumb(PlacementAlignment alignment, Cursor cursor)
		{
			DesignerThumb designerThumb = new DesignerThumb { Alignment = alignment, Cursor = cursor, IsPrimarySelection = true};
			AdornerPanel.SetPlacement(designerThumb, Place(designerThumb, alignment));

			adornerPanel.Children.Add(designerThumb);

			DragListener = new DragListener(designerThumb);
			DragListener.Started += drag_Started;
			DragListener.Changed += drag_Changed;
			DragListener.Completed += drag_Completed;
			
			return designerThumb;
		}
コード例 #11
0
		ResizeThumb CreateRotateThumb()
		{
			ResizeThumb rotateThumb = new RotateThumb();
			rotateThumb.Cursor = Cursors.Hand;
			rotateThumb.Cursor = ZoomControl.GetCursor("Images/rotate.cur");
			rotateThumb.Alignment = PlacementAlignment.Top;
			AdornerPanel.SetPlacement(rotateThumb,
			                          new RelativePlacement(HorizontalAlignment.Center, VerticalAlignment.Top) { WidthRelativeToContentWidth = 1, HeightOffset = 0 });
			adornerPanel.Children.Add(rotateThumb);

			DragListener drag = new DragListener(rotateThumb);
			drag.Started += drag_Rotate_Started;
			drag.Changed += drag_Rotate_Changed;
			return rotateThumb;
		}
コード例 #12
0
        protected void drag_Completed(DragListener drag)
        {
            var mprt = drag.Target as PathThumb;

            if (mprt != null)
            {
                if (operation != null && drag.IsCanceled)
                {
                    operation.Abort();
                }
                else if (drag.IsCanceled)
                {
                    changeGroup.Abort();
                }
                CommitOperation();
            }
        }
コード例 #13
0
		protected DesignerThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index)
		{
			DesignerThumb designerThumb = new MultiPointThumb { Index = index, Alignment = alignment, Cursor = cursor, IsPrimarySelection = true };
			AdornerPlacement ap = Place(designerThumb, alignment, index);
			(designerThumb as MultiPointThumb).AdornerPlacement = ap;

			AdornerPanel.SetPlacement(designerThumb, ap);
			adornerPanel.Children.Add(designerThumb);

			DragListener drag = new DragListener(designerThumb);

			WeakEventManager<DesignerThumb, MouseButtonEventArgs>.AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp);

			drag.Started += drag_Started;
			drag.Changed += drag_Changed;
			drag.Completed += drag_Completed;
			return designerThumb;
		}
コード例 #14
0
		protected virtual void drag_Started(DragListener drag)
		{
			Line al = ExtendedItem.View as Line;
			CurrentX2 = al.X2;
			CurrentY2 = al.Y2;
			CurrentLeft = (double)al.GetValue(Canvas.LeftProperty);
			CurrentTop = (double)al.GetValue(Canvas.TopProperty);

			var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
			zoom = designPanel.TryFindParent<ZoomControl>();

			if (resizeBehavior != null)
				operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize);
			else
			{
				changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray);
			}
			_isResizing = true;

			(drag.Target as UserControlPointsObjectThumb).IsPrimarySelection = false;
		}
コード例 #15
0
        protected virtual PathThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index, PathPoint pathpoint, Transform transform)
        {
            var designerThumb = new PathThumb(index, pathpoint)
            {
                Cursor = cursor
            };

            designerThumb.OperationMenu = BuildMenu(pathpoint);

            designerThumb.InnerRenderTransform = ((Transform)transform.Inverse);

            if (pathpoint.TargetPathPoint != null)
            {
                designerThumb.IsEllipse  = true;
                designerThumb.Foreground = Brushes.Blue;

                var bnd = new Binding("TranslatedPoint")
                {
                    Source = pathpoint.TargetPathPoint, Mode = BindingMode.OneWay, Converter = new RelativeToPointConverter(pathpoint)
                };
                designerThumb.SetBinding(PathThumb.RelativeToPointProperty, bnd);
            }

            AdornerPanel.SetPlacement(designerThumb, designerThumb.AdornerPlacement);
            adornerPanel.Children.Add(designerThumb);

            DragListener drag = new DragListener(designerThumb);

            drag.Transform = transform;

            WeakEventManager <DesignerThumb, MouseButtonEventArgs> .AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp);

            //drag.MouseDown += drag_MouseDown;
            drag.Started   += drag_Started;
            drag.Changed   += drag_Changed;
            drag.Completed += drag_Completed;
            return(designerThumb);
        }
コード例 #16
0
ファイル: DragListener.cs プロジェクト: fanyjie/SharpDevelop
		void Target_MouseMove(object sender, MouseEventArgs e)
		{
			if (IsDown) {
				DeltaDelta = e.GetPosition(null) - CurrentPoint;
				CurrentPoint += DeltaDelta;

				if (!IsActive) {
					if (Math.Abs(Delta.X) >= SystemParameters.MinimumHorizontalDragDistance ||
					    Math.Abs(Delta.Y) >= SystemParameters.MinimumVerticalDragDistance) {
						IsActive = true;
						CurrentListener = this;

						if (Started != null) {
							Started(this);
						}
					}
				}

				if (IsActive && Changed != null) {
					Changed(this);
				}
			}
		}
コード例 #17
0
		private void dragX_Started(DragListener drag)
		{
			_adornerLayer = this.adornerPanel.TryFindParent<AdornerLayer>();
			
			var designerItem = this.ExtendedItem.Component as FrameworkElement;
			this.parent = VisualTreeHelper.GetParent(designerItem) as UIElement;
			
			startPoint = Mouse.GetPosition(this.parent);
			
			if (this.skewTransform == null)
			{
				this.skewX = 0;
				this.skewY = 0;
			}
			else
			{
				this.skewX = this.skewTransform.AngleX;
				this.skewY = this.skewTransform.AngleY;
			}
			
			rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value;
			
			operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize);
		}
コード例 #18
0
ファイル: NumericUpDown.cs プロジェクト: JGroot/SharpDevelop
		void drag_Completed(DragListener drag)
		{
			IsDragging = false;
			OnDragCompleted();
		}
コード例 #19
0
ファイル: NumericUpDown.cs プロジェクト: JGroot/SharpDevelop
		void drag_Changed(DragListener drag)
		{
			IsDragging = true;
			MoveValue(-drag.DeltaDelta.Y * SmallChange);
		}
コード例 #20
0
		void drag_Changed(DragListener drag)
		{
			double dx = 0;
			double dy = 0;
			var alignment = (drag.Target as ResizeThumb).Alignment;
			
			if (alignment.Horizontal == HorizontalAlignment.Left) dx = -drag.Delta.X;
			if (alignment.Horizontal == HorizontalAlignment.Right) dx = drag.Delta.X;
			if (alignment.Vertical == VerticalAlignment.Top) dy = -drag.Delta.Y;
			if (alignment.Vertical == VerticalAlignment.Bottom) dy = drag.Delta.Y;
			
			var newWidth = Math.Max(0, oldSize.Width + dx);
			var newHeight = Math.Max(0, oldSize.Height + dy);

			ModelTools.Resize(ExtendedItem, newWidth, newHeight);

			if (operation != null) {
				var info = operation.PlacedItems[0];
				var result = info.OriginalBounds;
				
				if (alignment.Horizontal == HorizontalAlignment.Left)
					result.X = Math.Min(result.Right, result.X - dx);
				if (alignment.Vertical == VerticalAlignment.Top)
					result.Y = Math.Min(result.Bottom, result.Y - dy);
				result.Width = newWidth;
				result.Height = newHeight;
				
				info.Bounds = result.Round();
				info.ResizeThumbAlignment = alignment;
				operation.CurrentContainerBehavior.BeforeSetPosition(operation);
				operation.CurrentContainerBehavior.SetPosition(info);
			}
		}
コード例 #21
0
ファイル: NumericUpDown.cs プロジェクト: wskjava/SharpDevelop
 void drag_Completed(DragListener drag)
 {
     IsDragging = false;
     OnDragCompleted();
 }
コード例 #22
0
ファイル: NumericUpDown.cs プロジェクト: wskjava/SharpDevelop
 void drag_Started(DragListener drag)
 {
     OnDragStarted();
 }
コード例 #23
0
		protected void drag_Changed(DragListener drag)
		{
			var mprt = drag.Target as PathThumb;
			if (mprt != null) {
				_isDragging = true;
				MovePoints(drag.Delta.X, drag.Delta.Y);
			}
		}
コード例 #24
0
		protected void drag_MouseDown(DragListener drag)
		{
			
		}
コード例 #25
0
		protected virtual void drag_Completed(DragListener drag)
		{
			if (operation != null)
			{
				if (drag.IsCanceled) operation.Abort();
				else
				{
					ResetWidthHeightProperties();

					operation.Commit();
				}
				operation = null;
			}
			else
			{
				if (drag.IsCanceled)
					changeGroup.Abort();
				else
					changeGroup.Commit();
				changeGroup = null;
			}

			_isResizing = false;
			(drag.Target as UserControlPointsObjectThumb).IsPrimarySelection = true;
			HideSizeAndShowHandles();
		}
コード例 #26
0
		protected override void OnInitialized()
		{
			
			if (this.ExtendedItem.Component is WindowClone)
				return;
			base.OnInitialized();
			
			extendedItemArray[0] = this.ExtendedItem;
			this.ExtendedItem.PropertyChanged += OnPropertyChanged;
			
			var designerItem = this.ExtendedItem.Component as FrameworkElement;
			this.skewTransform = designerItem.RenderTransform as SkewTransform;
			
			if (skewTransform != null)
			{
				skewX = skewTransform.AngleX;
				skewY = skewTransform.AngleY;
			}
			
			thumb1 = new Thumb() { Cursor = Cursors.ScrollWE, Height = 14, Width = 4, Opacity = 1 };
			thumb2 = new Thumb() { Cursor = Cursors.ScrollNS, Width = 14, Height = 4, Opacity = 1 };
			
			OnPropertyChanged(null, null);
			
			adornerPanel.Children.Add(thumb1);
			adornerPanel.Children.Add(thumb2);
			
			DragListener drag1 = new DragListener(thumb1);
			drag1.Started += dragX_Started;
			drag1.Changed += dragX_Changed;
			drag1.Completed += dragX_Completed;
			DragListener drag2 = new DragListener(thumb2);
			drag2.Started += dragY_Started;
			drag2.Changed += dragY_Changed;
			drag2.Completed += dragY_Completed;
		}
コード例 #27
0
		private void drag_Rotate_Changed(DragListener drag)
		{
			Point currentPoint = Mouse.GetPosition(this.parent);
			Vector deltaVector = Point.Subtract(currentPoint, this.centerPoint);

			double angle = Vector.AngleBetween(this.startVector, deltaVector);

			var destAngle = this.initialAngle + Math.Round(angle, 0);

			if (!Keyboard.IsKeyDown(Key.LeftCtrl))
				destAngle = ((int)destAngle / 15) * 15;

			if (destAngle == 0)
			{
				this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).Reset();
				rtTransform = null;
				rotateTransform = null;
			}
			else
			{
				if (rtTransform == null)
				{
					if (!this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).IsSet) {
						this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformOriginProperty).SetValue(new Point(0.5,0.5));
					}
					
					if (this.rotateTransform == null)
						this.rotateTransform = new RotateTransform(0);
					this.ExtendedItem.Properties.GetProperty(FrameworkElement.RenderTransformProperty).SetValue(rotateTransform);
					rtTransform = this.ExtendedItem.Properties[FrameworkElement.RenderTransformProperty].Value;
				}
				rtTransform.Properties["Angle"].SetValue(destAngle);
				this.angle = destAngle * Math.PI / 180.0;
			}
		}
コード例 #28
0
ファイル: NumericUpDown.cs プロジェクト: JGroot/SharpDevelop
		public override void OnApplyTemplate()
		{
			base.OnApplyTemplate();

			upButton = (DragRepeatButton)Template.FindName("PART_UpButton", this);
			downButton = (DragRepeatButton)Template.FindName("PART_DownButton", this);
			textBox = (TextBox)Template.FindName("PART_TextBox", this);

			upButton.Click += upButton_Click;
			downButton.Click += downButton_Click;
			
			textBox.LostFocus += (sender, e) => OnLostFocus(e);

			var upDrag = new DragListener(upButton);
			var downDrag = new DragListener(downButton);

			upDrag.Started += drag_Started;
			upDrag.Changed += drag_Changed;
			upDrag.Completed += drag_Completed;

			downDrag.Started += drag_Started;
			downDrag.Changed += drag_Changed;
			downDrag.Completed += drag_Completed;

			Print();
		}
コード例 #29
0
		protected virtual PathThumb CreateThumb(PlacementAlignment alignment, Cursor cursor, int index, PathPoint pathpoint, Transform transform)
		{
			var designerThumb = new PathThumb(index, pathpoint) {Cursor = cursor};
			designerThumb.OperationMenu = BuildMenu(pathpoint);
			
			designerThumb.InnerRenderTransform = ((Transform)transform.Inverse);
			
			if (pathpoint.TargetPathPoint != null) {
				designerThumb.IsEllipse = true;
				designerThumb.Foreground = Brushes.Blue;

				var bnd = new Binding("TranslatedPoint") { Source = pathpoint.TargetPathPoint, Mode = BindingMode.OneWay, Converter = new RelativeToPointConverter(pathpoint) };
				designerThumb.SetBinding(PathThumb.RelativeToPointProperty, bnd);
			}

			AdornerPanel.SetPlacement(designerThumb, designerThumb.AdornerPlacement);
			adornerPanel.Children.Add(designerThumb);

			DragListener drag = new DragListener(designerThumb);
			drag.Transform = transform;

			WeakEventManager<DesignerThumb, MouseButtonEventArgs>.AddHandler(designerThumb, "PreviewMouseLeftButtonDown", ResizeThumbOnMouseLeftButtonUp);

			drag.MouseDown += drag_MouseDown;
			drag.Started += drag_Started;
			drag.Changed += drag_Changed;
			drag.Completed += drag_Completed;
			return designerThumb;
		}
コード例 #30
0
 protected void drag_MouseDown(DragListener drag)
 {
 }
コード例 #31
0
		// TODO : Remove all hide/show extensions from here.
		protected void drag_Started(DragListener drag)
		{
			//get current thumb
			var mprt = (drag.Target as PathThumb);
			if (mprt != null)
			{
				SetOperation();
			}
		}
コード例 #32
0
		private void drag_Rotate_Changed(DragListener drag)
		{
			Point currentPoint = Mouse.GetPosition(this.parent);
			Vector deltaVector = Point.Subtract(currentPoint, this.centerPoint);

			double angle = Vector.AngleBetween(this.startVector, deltaVector);

			var destAngle = this.initialAngle + Math.Round(angle, 0);

			if (!Keyboard.IsKeyDown(Key.LeftCtrl))
				destAngle = ((int)destAngle / 15) * 15;

			ModelTools.ApplyTransform(this.ExtendedItem, new RotateTransform() { Angle = destAngle });
		}
コード例 #33
0
		protected void drag_Completed(DragListener drag)
		{
			var mprt = drag.Target as PathThumb;
			if (mprt != null) {
				if (operation != null && drag.IsCanceled) {
					operation.Abort();
				} else if (drag.IsCanceled) {
					changeGroup.Abort();
				}
				CommitOperation();
			}
		}
コード例 #34
0
		// TODO : Remove all hide/show extensions from here.
		void drag_Started(DragListener drag)
		{
			var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
			if (designPanel != null)
			{
				var p = VisualTreeHelper.GetParent(designPanel);
				while (p != null && !(p is ZoomControl))
				{
					p = VisualTreeHelper.GetParent(p);
				}
				zoom = p as ZoomControl;
			}
			
			/* Abort editing Text if it was editing, because it interferes with the undo stack. */
			foreach(var extension in this.ExtendedItem.Extensions){
				if(extension is InPlaceEditorExtension){
					((InPlaceEditorExtension)extension).AbortEdit();
				}
			}
			
			oldSize = new Size(ModelTools.GetWidth(ExtendedItem.View), ModelTools.GetHeight(ExtendedItem.View));
			if (resizeBehavior != null)
				operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize);
			else {
				changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray);
			}
			_isResizing=true;
			ShowSizeAndHideHandles();
		}
コード例 #35
0
ファイル: NumericUpDown.cs プロジェクト: wskjava/SharpDevelop
 void drag_Changed(DragListener drag)
 {
     IsDragging = true;
     MoveValue(-drag.DeltaDelta.Y * SmallChange);
 }
コード例 #36
0
		void drag_Completed(DragListener drag)
		{
			if (operation != null) {
				if (drag.IsCanceled) operation.Abort();
				else operation.Commit();
				operation = null;
			} else {
				if (drag.IsCanceled) changeGroup.Abort();
				else changeGroup.Commit();
				changeGroup = null;
			}
			_isResizing=false;
			HideSizeAndShowHandles();
		}
コード例 #37
0
ファイル: DragListener.cs プロジェクト: fanyjie/SharpDevelop
		void Complete()
		{
			IsActive = false;
			CurrentListener = null;

			if (Completed != null) {
				Completed(this);
			}
		}
コード例 #38
0
		// TODO : Remove all hide/show extensions from here.
		void drag_Started(DragListener drag)
		{
			/* Abort editing Text if it was editing, because it interferes with the undo stack. */
			foreach(var extension in this.ExtendedItem.Extensions){
				if(extension is InPlaceEditorExtension){
					((InPlaceEditorExtension)extension).AbortEdit();
				}
			}
				
			oldSize = new Size(ModelTools.GetWidth(ExtendedItem.View), ModelTools.GetHeight(ExtendedItem.View));
			if (resizeBehavior != null)
				operation = PlacementOperation.Start(extendedItemArray, PlacementType.Resize);
			else {
				changeGroup = this.ExtendedItem.Context.OpenGroup("Resize", extendedItemArray);
			}
			_isResizing=true;
			ShowSizeAndHideHandles();
		}
コード例 #39
0
		void drag_Changed(DragListener drag)
		{
			double dx = 0;
			double dy = 0;
			var alignment = (drag.Target as ResizeThumb).Alignment;
			
			if (alignment.Horizontal == HorizontalAlignment.Left) dx = -drag.Delta.X;
			if (alignment.Horizontal == HorizontalAlignment.Right) dx = drag.Delta.X;
			if (alignment.Vertical == VerticalAlignment.Top) dy = -drag.Delta.Y;
			if (alignment.Vertical == VerticalAlignment.Bottom) dy = drag.Delta.Y;
			
			var designPanel = ExtendedItem.Services.DesignPanel as DesignPanel;
			
			if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) && alignment.Horizontal != HorizontalAlignment.Center && alignment.Vertical != VerticalAlignment.Center)
			{
				if (dx > dy)
					dx = dy;
				else
					dy = dx;
			}
			
			if (zoom != null)
			{
				dx = dx * (1 / zoom.CurrentZoom);
				dy = dy * (1 / zoom.CurrentZoom);
			}

			var newWidth = Math.Max(0, oldSize.Width + dx);
			var newHeight = Math.Max(0, oldSize.Height + dy);

			if (operation.CurrentContainerBehavior is GridPlacementSupport)
			{
				var hor = (HorizontalAlignment)this.ExtendedItem.Properties[FrameworkElement.HorizontalAlignmentProperty].ValueOnInstance;
				var ver = (VerticalAlignment)this.ExtendedItem.Properties[FrameworkElement.VerticalAlignmentProperty].ValueOnInstance;
				if (hor == HorizontalAlignment.Stretch)
					this.ExtendedItem.Properties[FrameworkElement.WidthProperty].Reset();
				else
					this.ExtendedItem.Properties.GetProperty(FrameworkElement.WidthProperty).SetValue(newWidth);

				if (ver == VerticalAlignment.Stretch)
					this.ExtendedItem.Properties[FrameworkElement.HeightProperty].Reset();
				else
					this.ExtendedItem.Properties.GetProperty(FrameworkElement.HeightProperty).SetValue(newHeight);

			}
			else
			{
				ModelTools.Resize(ExtendedItem, newWidth, newHeight);
			}
			
			if (operation != null) {
				var info = operation.PlacedItems[0];
				var result = info.OriginalBounds;
				
				if (alignment.Horizontal == HorizontalAlignment.Left)
					result.X = Math.Min(result.Right, result.X - dx);
				if (alignment.Vertical == VerticalAlignment.Top)
					result.Y = Math.Min(result.Bottom, result.Y - dy);
				result.Width = newWidth;
				result.Height = newHeight;
				
				info.Bounds = result.Round();
				info.ResizeThumbAlignment = alignment;
				operation.CurrentContainerBehavior.BeforeSetPosition(operation);
				operation.CurrentContainerBehavior.SetPosition(info);
			}
		}
コード例 #40
0
 void drag_Rotate_Completed(ICSharpCode.WpfDesign.Designer.Controls.DragListener drag)
 {
     operation.Commit();
 }
コード例 #41
0
ファイル: NumericUpDown.cs プロジェクト: JGroot/SharpDevelop
		void drag_Started(DragListener drag)
		{
			OnDragStarted();
		}
コード例 #42
0
		protected virtual void drag_Changed(DragListener drag)
		{
			Line al = ExtendedItem.View as Line;

			var thumb = drag.Target as UserControlPointsObjectThumb;
			var alignment = thumb.Alignment;
			var info = operation.PlacedItems[0];
			double dx = 0;
			double dy = 0;

			if (zoom != null)
			{
				dx = drag.Delta.X * (1 / zoom.CurrentZoom);
				dy = drag.Delta.Y * (1 / zoom.CurrentZoom);
			}

			double top, left, x, y, xtop, xleft;

			if (alignment == PlacementAlignment.TopLeft)
			{

				//normal values
				x = CurrentX2 - dx;
				y = CurrentY2 - dy;
				top = CurrentTop + dy;
				left = CurrentLeft + dx;

				//values to use when keys are pressed
				xtop = CurrentTop + CurrentY2;
				xleft = CurrentLeft + CurrentX2;

			}
			else
			{
				x = CurrentX2 + dx;
				y = CurrentY2 + dy;
				top = xtop = CurrentTop;
				left = xleft = CurrentLeft;
			}

			//			Bounds position = CalculateDrawing(x, y, left, top, xleft, xtop);
			ExtendedItem.Properties.GetProperty(thumb.DependencyProperty).SetValue(new Point(x, y));
			//			if (operation != null) {
			//				var result = info.OriginalBounds;
			//				result.X = position.Left;
			//				result.Y = position.Top;
			//				result.Width = Math.Abs(position.X);
			//				result.Height = Math.Abs(position.Y);
			//
			//				info.Bounds = result.Round();
			//				operation.CurrentContainerBehavior.BeforeSetPosition(operation);
			//				operation.CurrentContainerBehavior.SetPosition(info);
			//			}

			(drag.Target as UserControlPointsObjectThumb).InvalidateArrange();
			ResetWidthHeightProperties();
		}