private void Size_Click(object sender, RoutedEventArgs e) { AnimateSize s = _size[_random.Next(_size.Length)]; NewPosition.Size = s; RemovePosition.Size = s; }
/// <summary> /// Calculate appropriate rectangle from given current state and target size. /// </summary> /// <param name="size">Size enumeration.</param> /// <param name="rect">Rectangle to modify.</param> /// <param name="elementState">Animation state of element.</param> /// <returns>Calculated rectangle using provided size.</returns> protected Rect RectFromSize(AnimateSize size, Rect rect, MetaElementState elementState) { Size minSize = elementState.Element.DesiredSize; switch (size) { case AnimateSize.Original: return(rect); case AnimateSize.ZeroWidthLeft: return(new Rect(rect.X, rect.Y, minSize.Width, rect.Height)); case AnimateSize.ZeroWidthCenter: return(new Rect(rect.X + ((rect.Width - minSize.Width) / 2), rect.Y, minSize.Width, rect.Height)); case AnimateSize.ZeroWidthRight: return(new Rect(rect.Right - minSize.Width, rect.Y, minSize.Width, rect.Height)); case AnimateSize.ZeroHeightTop: return(new Rect(rect.X, rect.Y, rect.Width, minSize.Height)); case AnimateSize.ZeroHeightCenter: return(new Rect(rect.X, rect.Y + (rect.Height - minSize.Height) / 2, rect.Width, minSize.Height)); case AnimateSize.ZeroHeightBottom: return(new Rect(rect.X, rect.Bottom - minSize.Height, rect.Width, minSize.Height)); case AnimateSize.ZeroZeroCenter: return(new Rect(rect.X + (rect.Width - minSize.Width) / 2, rect.Y + (rect.Height - minSize.Height) / 2, minSize.Width, minSize.Height)); case AnimateSize.ZeroZeroTopLeft: return(new Rect(rect.X, rect.Y, minSize.Width, minSize.Height)); case AnimateSize.ZeroZeroTopRight: return(new Rect(rect.Right - minSize.Width, rect.Y, minSize.Width, minSize.Height)); case AnimateSize.ZeroZeroBottomLeft: return(new Rect(rect.X, rect.Bottom - minSize.Height, minSize.Width, minSize.Height)); case AnimateSize.ZeroZeroBottomRight: return(new Rect(rect.Right - minSize.Width, rect.Bottom - minSize.Height, minSize.Width, minSize.Height)); default: // Should never happen! Debug.Assert(false); return(new Rect()); } }
/// <summary> /// Calculate appropriate rectangle from given current state and target size. /// </summary> /// <param name="size">Size enumeration.</param> /// <param name="rect">Rectangle to modify.</param> /// <param name="elementState">Animation state of element.</param> /// <returns>Calculated rectangle using provided size.</returns> protected Rect RectFromSize(AnimateSize size, Rect rect, MetaElementState elementState) { Size minSize = elementState.Element.DesiredSize; switch (size) { case AnimateSize.Original: return rect; case AnimateSize.ZeroWidthLeft: return new Rect(rect.X, rect.Y, minSize.Width, rect.Height); case AnimateSize.ZeroWidthCenter: return new Rect(rect.X + ((rect.Width - minSize.Width) / 2), rect.Y, minSize.Width, rect.Height); case AnimateSize.ZeroWidthRight: return new Rect(rect.Right - minSize.Width, rect.Y, minSize.Width, rect.Height); case AnimateSize.ZeroHeightTop: return new Rect(rect.X, rect.Y, rect.Width, minSize.Height); case AnimateSize.ZeroHeightCenter: return new Rect(rect.X, rect.Y + (rect.Height - minSize.Height) / 2, rect.Width, minSize.Height); case AnimateSize.ZeroHeightBottom: return new Rect(rect.X, rect.Bottom - minSize.Height, rect.Width, minSize.Height); case AnimateSize.ZeroZeroCenter: return new Rect(rect.X + (rect.Width - minSize.Width) / 2, rect.Y + (rect.Height - minSize.Height) / 2, minSize.Width, minSize.Height); case AnimateSize.ZeroZeroTopLeft: return new Rect(rect.X, rect.Y, minSize.Width, minSize.Height); case AnimateSize.ZeroZeroTopRight: return new Rect(rect.Right - minSize.Width, rect.Y, minSize.Width, minSize.Height); case AnimateSize.ZeroZeroBottomLeft: return new Rect(rect.X, rect.Bottom - minSize.Height, minSize.Width, minSize.Height); case AnimateSize.ZeroZeroBottomRight: return new Rect(rect.Right - minSize.Width, rect.Bottom - minSize.Height, minSize.Width, minSize.Height); default: // Should never happen! Debug.Assert(false); return new Rect(); } }