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); }
/// <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); }
private void ClearEdgeMode() { _edgeMode = RenderOptions.GetEdgeMode(this); RenderOptions.SetEdgeMode(this, EdgeMode.Aliased); }
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); }