| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Reactive.Linq;
- using System.Text;
- using Avalonia;
- using Avalonia.Animation;
- using Avalonia.Collections;
- using Avalonia.Controls;
- using Avalonia.Controls.Html;
- using Avalonia.Controls.Primitives;
- using Avalonia.Controls.Shapes;
- using Avalonia.Controls.Templates;
- using Avalonia.Data;
- using Avalonia.Diagnostics;
- using Avalonia.Layout;
- using Avalonia.Media;
- using Avalonia.Media.Imaging;
- using Avalonia.Platform;
- using Avalonia.Threading;
- using TestApplication;
- namespace TestApplication
- {
- class MainWindow
- {
- private static readonly AvaloniaList<Node> s_treeData = new AvaloniaList<Node>
- {
- new Node
- {
- Name = "Root 1",
- Children = new AvaloniaList<Node>
- {
- new Node
- {
- Name = "Child 1",
- },
- new Node
- {
- Name = "Child 2",
- Children = new AvaloniaList<Node>
- {
- new Node
- {
- Name = "Grandchild 1",
- },
- new Node
- {
- Name = "Grandmaster Flash",
- },
- }
- },
- new Node
- {
- Name = "Child 3",
- },
- }
- },
- new Node
- {
- Name = "Root 2",
- },
- };
- private static readonly AvaloniaList<Item> s_listBoxData = new AvaloniaList<Item>
- {
- new Item { Name = "Item 1", Value = "Item 1 Value" },
- new Item { Name = "Item 2", Value = "Item 2 Value" },
- new Item { Name = "Item 3", Value = "Item 3 Value" },
- new Item { Name = "Item 4", Value = "Item 4 Value" },
- new Item { Name = "Item 5", Value = "Item 5 Value" },
- new Item { Name = "Item 6", Value = "Item 6 Value" },
- new Item { Name = "Item 7", Value = "Item 7 Value" },
- new Item { Name = "Item 8", Value = "Item 8 Value" },
- };
- public static Window Create()
- {
- TabControl container;
- Window window = new Window
- {
- Title = "Avalonia Test Application",
- //Width = 900,
- //Height = 480,
- Content = (container = new TabControl
- {
- Padding = new Thickness(5),
- Items = new[]
- {
- ButtonsTab(),
- TextTab(),
- HtmlTab(),
- ImagesTab(),
- ListsTab(),
- LayoutTab(),
- AnimationsTab(),
- },
- Transition = new CrossFade(TimeSpan.FromSeconds(0.25)),
- [Grid.RowProperty] = 1,
- [Grid.ColumnSpanProperty] = 2,
- })
- };
- container.Classes.Add("container");
-
- window.Show();
- return window;
- }
- private static TabItem ButtonsTab()
- {
- var result = new TabItem
- {
- Header = "Button",
- Content = new ScrollViewer()
- {
- CanScrollHorizontally = false,
- Content = new StackPanel
- {
- Margin = new Thickness(10),
- Orientation = Orientation.Vertical,
- Gap = 4,
- Children = new Controls
- {
- new TextBlock
- {
- Text = "Button",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A button control",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new Button
- {
- Width = 150,
- Content = "Button"
- },
- new Button
- {
- Width = 150,
- Content = "Disabled",
- IsEnabled = false,
- },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "ToggleButton",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A toggle button control",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new ToggleButton
- {
- Width = 150,
- IsChecked = true,
- Content = "On"
- },
- new ToggleButton
- {
- Width = 150,
- IsChecked = false,
- Content = "Off"
- },
- }
- }
- },
- };
- return result;
- }
- private static TabItem HtmlTab()
- {
- return new TabItem
- {
- Header = "Text",
- Content = new ScrollViewer()
- {
- CanScrollHorizontally = false,
- Content = new StackPanel()
- {
- Margin = new Thickness(10),
- Orientation = Orientation.Vertical,
- Gap = 4,
- Children = new Controls
- {
- new TextBlock
- {
- Text = "TextBlock",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A control for displaying text.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new TextBlock
- {
- Text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
- FontSize = 11
- },
- new TextBlock
- {
- Text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
- FontSize = 11,
- FontWeight = FontWeight.Medium
- },
- new TextBlock
- {
- Text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
- FontSize = 11,
- FontWeight = FontWeight.Bold
- },
- new TextBlock
- {
- Text = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
- FontSize = 11,
- FontStyle = FontStyle.Italic,
- },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "HtmlLabel",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A label capable of displaying HTML content",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new HtmlLabel
- {
- Background = Brush.Parse("#CCCCCC"),
- Padding = new Thickness(5),
- Text = @"<p><strong>Pellentesque habitant morbi tristique</strong> senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. <em>Aenean ultricies mi vitae est.</em> Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, <code>commodo vitae</code>, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. <a href=""#"">Donec non enim</a> in turpis pulvinar facilisis. Ut felis.</p>
- <h2>Header Level 2</h2>
-
- <ol>
- <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
- <li>Aliquam tincidunt mauris eu risus.</li>
- </ol>
- <blockquote><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est.</p></blockquote>
- <h3>Header Level 3</h3>
- <ul>
- <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
- <li>Aliquam tincidunt mauris eu risus.</li>
- </ul>"
- }
- }
- }
- }
- };
- }
- private static TabItem TextTab()
- {
- return new TabItem
- {
- Header = "Input",
- Content = new ScrollViewer()
- {
- Content = new StackPanel
- {
- Margin = new Thickness(10),
- Orientation = Orientation.Vertical,
- Gap = 4,
- Children = new Controls
- {
- new TextBlock
- {
- Text = "TextBox",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A text box control",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new TextBox { Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", Width = 200},
- new TextBox { Width = 200, Watermark="Watermark"},
- new TextBox { Width = 200, Watermark="Floating Watermark", UseFloatingWatermark = true },
- new TextBox { AcceptsReturn = true, TextWrapping = TextWrapping.Wrap, Width = 200, Height = 150, Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus magna. Cras in mi at felis aliquet congue. Ut a est eget ligula molestie gravida. Curabitur massa. Donec eleifend, libero at sagittis mollis, tellus est malesuada tellus, at luctus turpis elit sit amet quam. Vivamus pretium ornare est." },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "CheckBox",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A check box control",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new CheckBox { IsChecked = true, Margin = new Thickness(0, 0, 0, 5), Content = "Checked" },
- new CheckBox { IsChecked = false, Content = "Unchecked" },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "RadioButton",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A radio button control",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new RadioButton { IsChecked = true, Content = "Option 1" },
- new RadioButton { IsChecked = false, Content = "Option 2" },
- new RadioButton { IsChecked = false, Content = "Option 3" },
- }
- }
- }
- };
- }
- public static string RootNamespace;
- static Stream GetImage(string path)
- {
- return AvaloniaLocator.Current.GetService<IAssetLoader>().Open(new Uri("resm:" + RootNamespace + "." + path));
- }
- private static TabItem ListsTab()
- {
- return new TabItem
- {
- Header = "Lists",
- Content = new ScrollViewer()
- {
- CanScrollHorizontally = false,
- Content = new StackPanel
- {
- HorizontalAlignment = HorizontalAlignment.Left,
- Orientation = Orientation.Vertical,
- VerticalAlignment = VerticalAlignment.Top,
- Gap = 4,
- Margin = new Thickness(10),
- DataTemplates = new DataTemplates
- {
- new FuncDataTemplate<Item>(x =>
- new StackPanel
- {
- Gap = 4,
- Orientation = Orientation.Horizontal,
- Children = new Controls
- {
- new Image { Width = 50, Height = 50, Source = new Bitmap(GetImage("github_icon.png")) },
- new TextBlock { Text = x.Name, FontSize = 18 }
- }
- })
- },
- Children = new Controls
- {
- new TextBlock
- {
- Text = "ListBox",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A list box control.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new ListBox
- {
- BorderThickness = 2,
- Items = s_listBoxData,
- Height = 300,
- Width = 300,
- },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "TreeView",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A tree view control.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new TreeView
- {
- Name = "treeView",
- Items = s_treeData,
- Height = 300,
- BorderThickness = 2,
- Width = 300,
- }
- }
- },
- }
- };
- }
- private static TabItem ImagesTab()
- {
- var imageCarousel = new Carousel
- {
- Width = 400,
- Height = 400,
- Transition = new PageSlide(TimeSpan.FromSeconds(0.25)),
- Items = new[]
- {
- new Image { Source = new Bitmap(GetImage("github_icon.png")), Width = 400, Height = 400 },
- new Image { Source = new Bitmap(GetImage("pattern.jpg")), Width = 400, Height = 400 },
- }
- };
- var next = new Button
- {
- VerticalAlignment = VerticalAlignment.Center,
- Padding = new Thickness(20),
- Content = new Avalonia.Controls.Shapes.Path
- {
- Data = StreamGeometry.Parse("M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"),
- Fill = Brushes.Black
- }
- };
- var prev = new Button
- {
- VerticalAlignment = VerticalAlignment.Center,
- Padding = new Thickness(20),
- Content = new Avalonia.Controls.Shapes.Path
- {
- Data = StreamGeometry.Parse("M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"),
- Fill = Brushes.Black
- }
- };
- prev.Click += (s, e) =>
- {
- if (imageCarousel.SelectedIndex == 0)
- imageCarousel.SelectedIndex = 1;
- else
- imageCarousel.SelectedIndex--;
- };
- next.Click += (s, e) =>
- {
- if (imageCarousel.SelectedIndex == 1)
- imageCarousel.SelectedIndex = 0;
- else
- imageCarousel.SelectedIndex++;
- };
- return new TabItem
- {
- Header = "Images",
- Content = new ScrollViewer
- {
- Content = new StackPanel
- {
- HorizontalAlignment = HorizontalAlignment.Left,
- Orientation = Orientation.Vertical,
- VerticalAlignment = VerticalAlignment.Top,
- Gap = 4,
- Margin = new Thickness(10),
- Children = new Controls
- {
- new TextBlock
- {
- Text = "Carousel",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "An items control that displays its items as pages that fill the controls.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new StackPanel
- {
- Name = "carouselVisual",
- Orientation = Orientation.Horizontal,
- Gap = 4,
- Children = new Controls
- {
- prev,
- imageCarousel,
- next
- }
- }
- }
- }
- }
- };
- }
- private static TabItem LayoutTab()
- {
- var polylinePoints = new Point[] { new Point(0, 0), new Point(5, 0), new Point(6, -2), new Point(7, 3), new Point(8, -3),
- new Point(9, 1), new Point(10, 0), new Point(15, 0) };
- var polygonPoints = new Point[] { new Point(5, 0), new Point(8, 8), new Point(0, 3), new Point(10, 3), new Point(2, 8) };
- for (int i = 0; i < polylinePoints.Length; i++)
- {
- polylinePoints[i] = polylinePoints[i] * 13;
- }
- for (int i = 0; i < polygonPoints.Length; i++)
- {
- polygonPoints[i] = polygonPoints[i] * 15;
- }
- return new TabItem
- {
- Header = "Layout",
- Content = new ScrollViewer
- {
- Content = new StackPanel
- {
- HorizontalAlignment = HorizontalAlignment.Left,
- Orientation = Orientation.Vertical,
- VerticalAlignment = VerticalAlignment.Top,
- Gap = 4,
- Margin = new Thickness(10),
- Children = new Controls
- {
- new TextBlock
- {
- Text = "Grid",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "Lays out child controls according to a grid.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new Grid
- {
- Width = 600,
- ColumnDefinitions = new ColumnDefinitions
- {
- new ColumnDefinition(1, GridUnitType.Star),
- new ColumnDefinition(1, GridUnitType.Star),
- },
- RowDefinitions = new RowDefinitions
- {
- new RowDefinition(1, GridUnitType.Auto),
- new RowDefinition(1, GridUnitType.Auto)
- },
- Children = new Controls
- {
- new Rectangle
- {
- Fill = Brush.Parse("#FF5722"),
- [Grid.ColumnSpanProperty] = 2,
- Height = 200,
- Margin = new Thickness(2.5)
- },
- new Rectangle
- {
- Fill = Brush.Parse("#FF5722"),
- [Grid.RowProperty] = 1,
- Height = 100,
- Margin = new Thickness(2.5)
- },
- new Rectangle
- {
- Fill = Brush.Parse("#FF5722"),
- [Grid.RowProperty] = 1,
- [Grid.ColumnProperty] = 1,
- Height = 100,
- Margin = new Thickness(2.5)
- },
- },
- },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "StackPanel",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A panel which lays out its children horizontally or vertically.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new StackPanel
- {
- Orientation = Orientation.Vertical,
- Gap = 4,
- Width = 300,
- Children = new Controls
- {
- new Rectangle
- {
- Fill = Brush.Parse("#FFC107"),
- Height = 50,
- },
- new Rectangle
- {
- Fill = Brush.Parse("#FFC107"),
- Height = 50,
- },
- new Rectangle
- {
- Fill = Brush.Parse("#FFC107"),
- Height = 50,
- },
- }
- },
- new TextBlock
- {
- Margin = new Thickness(0, 40, 0, 0),
- Text = "Canvas",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A panel which lays out its children by explicit coordinates.",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- new Canvas
- {
- Background = Brushes.Yellow,
- Width = 300,
- Height = 400,
- Children = new Controls
- {
- new Rectangle
- {
- Fill = Brushes.Blue,
- Width = 63,
- Height = 41,
- [Canvas.LeftProperty] = 40,
- [Canvas.TopProperty] = 31,
- },
- new Ellipse
- {
- Fill = Brushes.Green,
- Width = 58,
- Height = 58,
- [Canvas.LeftProperty] = 130,
- [Canvas.TopProperty] = 79,
- },
- new Line
- {
- Stroke = Brushes.Red,
- StrokeThickness = 2,
- StartPoint = new Point(120, 185),
- EndPoint = new Point(30, 115)
- },
- new Avalonia.Controls.Shapes.Path
- {
- Fill = Brushes.Orange,
- Data = StreamGeometry.Parse("M 30,250 c 50,0 50,-50 c 50,0 50,50 h -50 v 50 l -50,-50 Z"),
- },
- new Polygon
- {
- Stroke = Brushes.DarkBlue,
- Fill = Brushes.Violet,
- Points = polygonPoints,
- StrokeThickness = 1,
- [Canvas.LeftProperty] = 150,
- [Canvas.TopProperty] = 180,
- },
- new Polyline
- {
- Stroke = Brushes.Brown,
- Points = polylinePoints,
- StrokeThickness = 5,
- StrokeJoin = PenLineJoin.Round,
- StrokeStartLineCap = PenLineCap.Triangle,
- StrokeEndLineCap = PenLineCap.Triangle,
- [Canvas.LeftProperty] = 30,
- [Canvas.TopProperty] = 350,
- },
- }
- },
- }
- }
- }
- };
- }
- private static TabItem AnimationsTab()
- {
- Border border1;
- Border border2;
- RotateTransform rotate;
- Button button1;
- var result = new TabItem
- {
- Header = "Animations",
- Content = new StackPanel
- {
- Orientation = Orientation.Vertical,
- Gap = 4,
- Margin = new Thickness(10),
- Children = new Controls
- {
- new TextBlock
- {
- Text = "Animations",
- FontWeight = FontWeight.Medium,
- FontSize = 20,
- Foreground = Brush.Parse("#212121"),
- },
- new TextBlock
- {
- Text = "A few animations showcased below",
- FontSize = 13,
- Foreground = Brush.Parse("#727272"),
- Margin = new Thickness(0, 0, 0, 10)
- },
- (button1 = new Button
- {
- Content = "Animate",
- Width = 120,
- [Grid.ColumnProperty] = 1,
- [Grid.RowProperty] = 1,
- }),
- new Canvas
- {
- ClipToBounds = false,
- Children = new Controls
- {
- (border1 = new Border
- {
- Width = 100,
- Height = 100,
- HorizontalAlignment = HorizontalAlignment.Center,
- VerticalAlignment = VerticalAlignment.Center,
- Background = Brushes.Crimson,
- RenderTransform = new RotateTransform(),
- Child = new Grid
- {
- Children = new Controls
- {
- new Ellipse()
- {
- Width = 100,
- Height = 100,
- Fill =
- new RadialGradientBrush()
- {
- GradientStops =
- {
- new GradientStop(Colors.Blue, 0),
- new GradientStop(Colors.Green, 1)
- },
- Radius = 75
- }
- },
- new Avalonia.Controls.Shapes.Path
- {
- Data =
- StreamGeometry.Parse(
- "F1 M 16.6309,18.6563C 17.1309,8.15625 29.8809,14.1563 29.8809,14.1563C 30.8809,11.1563 34.1308,11.4063 34.1308,11.4063C 33.5,12 34.6309,13.1563 34.6309,13.1563C 32.1309,13.1562 31.1309,14.9062 31.1309,14.9062C 41.1309,23.9062 32.6309,27.9063 32.6309,27.9062C 24.6309,24.9063 21.1309,22.1562 16.6309,18.6563 Z M 16.6309,19.9063C 21.6309,24.1563 25.1309,26.1562 31.6309,28.6562C 31.6309,28.6562 26.3809,39.1562 18.3809,36.1563C 18.3809,36.1563 18,38 16.3809,36.9063C 15,36 16.3809,34.9063 16.3809,34.9063C 16.3809,34.9063 10.1309,30.9062 16.6309,19.9063 Z"),
- Fill =
- new LinearGradientBrush()
- {
- GradientStops =
- {
- new GradientStop(Colors.Green, 0),
- new GradientStop(Colors.LightSeaGreen, 1)
- }
- },
- HorizontalAlignment = HorizontalAlignment.Center,
- VerticalAlignment = VerticalAlignment.Center,
- RenderTransform = new MatrixTransform(Matrix.CreateScale(2, 2))
- }
- }
- },
- [Canvas.LeftProperty] = 100,
- [Canvas.TopProperty] = 100,
- }),
- (border2 = new Border
- {
- Width = 100,
- Height = 100,
- HorizontalAlignment = HorizontalAlignment.Center,
- VerticalAlignment = VerticalAlignment.Center,
- Background = Brushes.Coral,
- Child = new Image
- {
- Source = new Bitmap(GetImage("github_icon.png")),
- HorizontalAlignment = HorizontalAlignment.Center,
- VerticalAlignment = VerticalAlignment.Center,
- },
- RenderTransform = (rotate = new RotateTransform
- {
- PropertyTransitions = new PropertyTransitions
- {
- RotateTransform.AngleProperty.Transition(500),
- }
- }),
- PropertyTransitions = new PropertyTransitions
- {
- Layoutable.WidthProperty.Transition(300),
- Layoutable.HeightProperty.Transition(1000),
- },
- [Canvas.LeftProperty] = 400,
- [Canvas.TopProperty] = 100,
- }),
- }
- }
- },
- },
- };
- button1.Click += (s, e) =>
- {
- if (border2.Width == 100)
- {
- border2.Width = border2.Height = 400;
- rotate.Angle = 180;
- }
- else
- {
- border2.Width = border2.Height = 100;
- rotate.Angle = 0;
- }
- };
- var start = Animate.Stopwatch.Elapsed;
- var degrees = Animate.Timer
- .Select(x =>
- {
- var elapsed = (x - start).TotalSeconds;
- var cycles = elapsed / 4;
- var progress = cycles % 1;
- return 360.0 * progress;
- });
- border1.RenderTransform.Bind(
- RotateTransform.AngleProperty,
- degrees,
- BindingPriority.Animation);
- return result;
- }
- }
- }
|