private ShapeRange traceBitmap(Shape s, Point p) { var sr = new ShapeRange(); sr.RemoveAll(); try { Shape dub = s.Duplicate(p.X, p.Y); dub.Bitmap.Resample(0, 0, true, 72, 72); dub.ApplyEffectBCI(-100, 100, -100); ShapeRange tr = dub.Bitmap.Trace( cdrTraceType.cdrTraceLineArt, -1, 1, cdrColorType.cdrColorCMYK, cdrPaletteID.cdrCustom, 1, true, false, true ).Finish(); Shape path = tr.UngroupAllEx().Combine(); path.Curve.Nodes.All().AutoReduce(0.01); sr.Add(path); if ((bool)cbBitmapToPowerClip.IsChecked) { Shape clip = path.Duplicate(p.X * -1, p.Y * -1); clip.OrderBackOf(s); clip.Fill.ApplyNoFill(); clip.Outline.SetNoOutline(); s.AddToPowerClip(clip); sr.Add(clip); } return(sr); } catch (Exception err) { MessageBox.Show(err.ToString(), MName, MessageBoxButton.OK, MessageBoxImage.Error); return(sr); } }