Exemplo n.º 1
0
        public void ImageIsPixelArtReady(int width, int height)
        {
            Image img = ImageGenerator.GenerateForPixelArts(width, height);

            Assert.IsTrue(img.Stretch == Stretch.Uniform && RenderOptions.GetBitmapScalingMode(img) == BitmapScalingMode.NearestNeighbor &&
                          RenderOptions.GetEdgeMode(img) == EdgeMode.Aliased && img.Width == width && img.Height == height);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a new <see cref="DrawingStyle"/> based on the specified <see cref="SkiaFrameworkElement"/>.
        /// </summary>
        /// <param name="element">The element.</param>
        /// <returns></returns>
        public static DrawingStyle FromElement(SkiaFrameworkElement element)
        {
            DrawingStyle style = new DrawingStyle();

            style.EdgeMode = RenderOptions.GetEdgeMode(element);
            style.Effect   = element.WpfElement.Effect;

            if (element.Parent != null && element.Parent.WpfElement.RenderTransform != Transform.Identity)
            {
                style.Transform       = element.Parent.WpfElement.RenderTransform;
                style.TransformOrigin = element.Parent.WpfElement.RenderTransformOrigin;
            }
            else
            {
                style.Transform       = element.WpfElement.RenderTransform;
                style.TransformOrigin = element.WpfElement.RenderTransformOrigin;
            }
            return(style);
        }
Exemplo n.º 3
0
 private void ClearEdgeMode()
 {
     _edgeMode = RenderOptions.GetEdgeMode(this);
     RenderOptions.SetEdgeMode(this, EdgeMode.Aliased);
 }
Exemplo n.º 4
0
        void GFXContainer_Loaded(object sender, RoutedEventArgs e)
        {
            int x = 0;

            DrawingVisual visual_pack = new DrawingVisual();

            VisualCollection extraVisuals = new VisualCollection(visual_pack);

            for (int i = 0; i < 2; i++)
            {
                DrawingVisual visual = new DrawingVisual();
                using (DrawingContext dc = visual.RenderOpen())
                {
                    if (i < 1)
                    {
                        dc.DrawRectangle(Brushes.Red, new Pen(Brushes.Black, 2),
                                         new Rect(new Point(0 + x, 0), new Size(40, 40)));
                    }
                    else
                    {
                        //    bmp = Properties.Resources.BaseCar2.ToMediaBitmap();
                        SpritePos  = new Point(-50, -20.2);
                        SpriteSize = new Point(bmp.Width / 2, bmp.Height / 2);
                        dc.DrawImage(bmp, new Rect(0, 0, bmp.Width, bmp.Height));
                    }
                }
                RenderOptions.SetBitmapScalingMode(visual, BitmapScalingMode.Fant);
                Debug.WriteLine("=> BitmapScaling = {0}", RenderOptions.GetBitmapScalingMode(visual));
                Debug.WriteLine("=> EdgeMode = {0}", RenderOptions.GetEdgeMode(visual));
                //visual.Transform.BeginAnimation
                Visuals.Add(visual);

                // Test mit mehr Visuals
                //extraVisuals.Add(visual);
                // --- end Test
            }
            //Visuals.Add(visual_pack);

            // Test mit mehr Visuals

            DrawingVisual visual2 = new DrawingVisual();

            using (DrawingContext dc = visual2.RenderOpen())
            {
                dc.DrawText(
                    new FormattedText(String.Format("FPS: {0:#0.0}", currentFPS),
                                      CultureInfo.GetCultureInfo("en-us"),
                                      FlowDirection.LeftToRight,
                                      new Typeface("Verdana"),
                                      26, System.Windows.Media.Brushes.Black),
                    new Point(300, 0));
            }

            Debug.WriteLine("=> Parent Before = {0}", visual2.Parent);
            Visuals.Add(visual2);
            // --- end Test

            //List<DrawingVisual> vc = new List<DrawingVisual>();

            Stopwatch sw = new Stopwatch();

            sw.Start();

            for (int i = 0; i < 8000; i++)
            {
                DrawingVisual vis = new DrawingVisual();
                vc.Add(vis);
                Visuals.Add(vis);
            }
            Debug.WriteLine("=> generate = {0}", sw.ElapsedMilliseconds);
            sw.Restart();
            //foreach (var item in vc)
            //{
            //    Visuals.Remove(item);
            //}
            for (int i = 0; i < vc.Count; i++)
            {
                // vc[i] = new DrawingVisual();
                //vc[i] = null;
            }
            Debug.WriteLine("=> remove = {0}", sw.ElapsedMilliseconds);
            DrawingVisual vos = (DrawingVisual)Visuals[20];

            Debug.WriteLine("=> Parent = {0}", vos.Parent);
            Debug.WriteLine("=> Parent after Remove = {0}", vos.Parent);
        }