protected override void OnTemplateApplied(TemplateAppliedEventArgs e)
        {
            base.OnTemplateApplied(e);

            var canvas             = e.NameScope.Get <Canvas>("PART_Canvas");
            var pieceControlEasing = LinearEasing.For <double>();
            var pieceControlPropertyTransitionsX = new PropertyTransition(Canvas.LeftProperty, TimeSpan.FromSeconds(0.075), pieceControlEasing);
            var pieceControlPropertyTransitionsY = new PropertyTransition(Canvas.TopProperty, TimeSpan.FromSeconds(0.075), pieceControlEasing);

            foreach (var piece in (PuzzlePiece[])Enum.GetValues(typeof(PuzzlePiece)))
            {
                if (piece != PuzzlePiece.Space)
                {
                    var pieceControl = new PuzzlePieceControl();

                    pieceControl.DataContext = piece;

                    // Setting default values for Canvas properties since property transition doesn't work with NaN values

                    pieceControl.SetValue(Canvas.LeftProperty, 0.0);
                    pieceControl.SetValue(Canvas.TopProperty, 0.0);
                    pieceControl.PropertyTransitions.Add(pieceControlPropertyTransitionsX);
                    pieceControl.PropertyTransitions.Add(pieceControlPropertyTransitionsY);
                    pieceControl.Tapped += OnPieceControlTapped;

                    canvas.Children.Add(pieceControl);
                }
            }

            _pieceControls = canvas.Children;
        }
Example #2
0
        static void Main(String[] args)
        {
            Actor      actor;
            Stage      stage;
            Canvas     canvas;
            Transition transition;

            if (Application.Init() != InitError.Success)
            {
                return;
            }

            stage                 = new Stage();
            stage.Title           = "Rectangle with rounded corners";
            stage.BackgroundColor = Clutter.Color.New(255, 255, 255, 255);
            stage.SetSize(500, 500);
            stage.Show();

            canvas = (Canvas)Canvas.New();
            canvas.SetSize(300, 300);

            actor                = new Actor();
            actor.Content        = canvas;
            actor.ContentGravity = ContentGravity.Center;
            actor.SetContentScalingFilters(ScalingFilter.Trilinear, ScalingFilter.Linear);
            actor.SetPivotPoint(0.5f, 0.5f);
            actor.AddConstraint(new BindConstraint(stage, BindCoordinate.Size, 0f));
            stage.AddChild(actor);

            transition                         = new PropertyTransition("rotation-angle-y");
            transition.FromValue               = new GLib.Value(0.0);
            transition.ToValue                 = new GLib.Value(360.0);
            ((Timeline)transition).Duration    = 2000;
            ((Timeline)transition).RepeatCount = -1;
            actor.AddTransition("rotateActor", transition);

            stage.Destroyed += (sender, e) => Application.MainQuit();
            canvas.Drawn    += DrawContent;

            canvas.Invalidate();
            Application.Main();
        }