Example #1
0
 protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
 {
     RotarySwitch rotarySwitch = Visual as RotarySwitch;
     if (rotarySwitch != null)
     {
         if (rotarySwitch.DrawLines)
         {
             drawingContext.DrawDrawing(_lines);
         }
         foreach (SwitchPositionLabel label in _labels)
         {
             drawingContext.DrawText(label.Text, label.Location);
         }
         _imageBrush.RelativeTransform = new RotateTransform(rotarySwitch.KnobRotation, 0.5d, 0.5d);
         drawingContext.DrawRectangle(_imageBrush, null, _imageRect);
     }
 }
        protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
        {
            base.OnRender(drawingContext);

            if (IsBusy)
            {
                var centerX = ActualWidth / 2;
                var centerY = ActualHeight / 2;
                var drawing = new DrawingGroup();
                var radius = 30.0;
                var ballSize = 10.0;
                var transform = new RotateTransform();

                for (double i = 0; i < 8; ++i)
                {
                    var color = (byte)(double)(((1.0 - i / 8.0) * 255.0));
                    drawing.Children.Add(
                        new GeometryDrawing(
                            new SolidColorBrush(Color.FromArgb(255, color, color, color)),
                            null,
                            new EllipseGeometry(
                                new Point(
                                    centerX + radius * Math.Cos((Math.PI * 2 / 8.0) * i),
                                    centerY + radius * Math.Sin((Math.PI * 2 / 8.0) * i)),
                                ballSize, ballSize)));
                }

                transform.CenterX = centerX;
                transform.CenterY = centerY;
                transform.BeginAnimation(RotateTransform.AngleProperty,
                    new DoubleAnimation(0, 360, new Duration(TimeSpan.FromSeconds(1.5)))
                    {
                        RepeatBehavior = RepeatBehavior.Forever,
                    });

                drawing.Transform = transform;
                drawingContext.DrawDrawing(drawing);
            }
        }
Example #3
0
        private void DrawTiles(System.Windows.Media.DrawingContext dc)
        {
            TilesWideObject = (int)(this.ActualWidth / 4) + 1;
            TilesHighObject = (int)(this.ActualHeight / 4) + 1;

            int startX = (int)CurrentPointObject.X - (TilesWideObject / 2);
            int startY = (int)CurrentPointObject.Y - (TilesHighObject / 2);

            if (startX < 0)
                startX = 0;

            if (startY < 0)
                startY = 0;

            int endX = startX + TilesWideObject;
            int endY = startY + TilesHighObject;

            if (endX > GameWorldObject.GameMapWidth)
            {
                endX = GameWorldObject.GameMapWidth;
                startX = endX - TilesWideObject;
            }
            else if (startX < 0)
            {
                startX = 0;
                endX = TilesWideObject;
            }

            if (endY > GameWorldObject.GameMapHeight)
            {
                endY = GameWorldObject.GameMapHeight;
                startY = endY - TilesHighObject;
            }
            else if (startY < 0)
            {
                startY = 0;
                endY = TilesHighObject;
            }

            int CountX = 0;
            int CountY = 0;

            DrawingGroup dg = new DrawingGroup();

            for (int x = startX; x < endX; x++)
            {
                for (int y = startY; y < endY; y++)
                {
                    dg.Children.Add(
                        new ImageDrawing(_mapTiles[GameWorldObject.GameMap[x, y].GraphicsTile.TileStartPoint],
                            new Rect(CountX * 4, CountY * 4, 4, 4)
                            ));

                    dg.Children.Add(
                        new GeometryDrawing(
                            null,
                            new Pen(
                                new SolidColorBrush(
                                    Color.FromRgb(255, 0, 20)), .1),
                                    new RectangleGeometry(
                                        new Rect(CountX * 4, CountY * 4, 4, 4)
                                    )
                                )
                            );

                    CountY++;
                }
                CountY = 0;
                CountX++;
            }

            dg.Freeze();
            dc.DrawDrawing(dg);
            //dc.DrawDrawing(DrawMainMapLocation())
        }
Example #4
0
        private void DrawTiles(System.Windows.Media.DrawingContext dc)
        {
            TilesWideObject = (int)(this.ActualWidth / 64) + 1;
            TilesHighObject = (int)(this.ActualHeight / 64) + 1;

            int startX = (int)CurrentPointObject.X - (TilesWideObject / 2);
            int startY = (int)CurrentPointObject.Y - (TilesHighObject / 2);

            if (startX < 0)
                startX = 0;

            if (startY < 0)
                startY = 0;

            int endX = startX + TilesWideObject;
            int endY = startY + TilesHighObject;

            if (endX > GameWorldObject.GameMapWidth)
            {
                endX = GameWorldObject.GameMapWidth;
                startX = endX - TilesWideObject;
            }
            else if (startX < 0)
            {
                startX = 0;
                endX = TilesWideObject;
            }

            if (endY > GameWorldObject.GameMapHeight)
            {
                endY = GameWorldObject.GameMapHeight;
                startY = endY - TilesHighObject;
            }
            else if (startY < 0)
            {
                startY = 0;
                endY = TilesHighObject;
            }

            int CountX = 0;
            int CountY = 0;

            DrawingGroup dg = new DrawingGroup();

            for (int x = startX; x < endX; x++)
            {
                for (int y = startY; y < endY; y++)
                {

                    dg.Children.Add(
                       new ImageDrawing(_mapTiles[GameWorldObject.GameMap[x, y].GraphicsTile.TileStartPoint],
                           new Rect(CountX * 64, CountY * 64, 64, 64)
                           ));

                    dg.Children.Add(
                        new GeometryDrawing(
                            null,
                            new Pen(
                                new SolidColorBrush(
                                    Color.FromRgb(255, 0, 20)), .3),
                                    new RectangleGeometry(
                                        new Rect(CountX * 64, CountY * 64, 64, 64)
                                    )
                                )
                            );
            #if DEBUG
                    if (x % 5 == 0 && y % 5 == 0)
                    {
                        FormattedText text = new FormattedText("X:" + x + " Y:" + y,
                        CultureInfo.CurrentCulture,
                        FlowDirection.LeftToRight,
                        new System.Windows.Media.Typeface("arial"),
                        12,
                        new SolidColorBrush(Color.FromRgb(255, 0, 20)));

                        Geometry geometry = text.BuildGeometry(new Point(CountX * 64, CountY * 64));
                        GeometryDrawing gd = new GeometryDrawing(new SolidColorBrush(Color.FromRgb(255, 0, 20)), new Pen(), geometry);
                        dg.Children.Add(gd);
                    }
            #endif

                    CountY++;
                }
                CountY = 0;
                CountX++;
            }
            dg.Freeze();
            dc.DrawDrawing(dg);
        }